En Chile se usan números de rut como este, 97030000-7, que consiste en dos partes: un número que va antes del guión y un dígito verificador después del mismo. Este dígito es único para el número y es siempre un caractér númerico o la letra K. Es decir en rut 97030000-7 es válido pero el rut 97030000-8 no lo es.
¿Cómo se puede calcular el dígito verificador teniendo un número?
Compartimos esta función simple que usamos en nuestros desarrollos y que esperamos te ahorre algún tiempo de programación:
function getMod11Dv( $num ){ /* --------------------------------------------------------------------------------------- */ $digits = str_replace( array( '.', ',' ), array( ''.'' ), strrev($num ) ); if ( ! ctype_digit( $digits ) ) { return false; } $sum = 0; $factor = 2; for( $i=0;$i<strlen( $digits ); $i++ ) { $sum += substr( $digits,$i,1 ) * $factor; if ( $factor == 7 ) { $factor = 2; }else{ $factor++; } } $dv = 11 - ($sum % 11); if ( $dv < 10 ) { return $dv; } if ( $dv == 10 ) { return 'K'; } return 0; }
Una explicación sobre la fórmula de cálculo la puedes encontrar en este artículo de Wikipedia, esperamos que te sea de utilidad.
Una nueva versión de este script está disponible en deprogramador.com
Post data: el RUT tiene formato numérico, no requiero que se valide. Se ingresa como 1234567, y el formato está definido para que se vea como 1.234.567
Hola: estoy haciendo un formulario en Adobe Acrobat, dentro del cual en uno de los campos se digita el RUT y luego el dígito verificador dv).
Yo ya conocía la fórmula para calcularlo, y por supuesto, hacerlo manualmente es mucho más fácil que escribir la fórmula.
Soy un ultra novato en JS, y quisiera preguntarte qué había que agregar al script, considerando que debería leer el RUT (número) del campo «RUT» y escribir el dv en el campo «DV»
Gracias de antemano.