martes, 26 de enero de 2016

La letra del DNI (1)

¿Cómo funciona la letra del DNI?
Es un sencillo algoritmo que asigna una letra en función del resto que se obtiene al dividir el número de ocho cifras por 23.


En JavaScript se escribiría:
numero%23
Lo que parece más complicado es saber qué letra se corresponde con cada uno de esos 23 restos posibles (del 0 al 22). Aquí tenemos los valores:


Por tanto. podríamos hacer esta división manualmente y conseguir la letra que le correspondería.
Sin embargo con JavaScript es un proceso relativamente sencillo.

Código JS
<script> 
function averigua () 

cadena="TRWAGMYFPDXBNJZSQVHLCKET"; 
posicion = formulario.dni.value % 23; 
letra = cadena.substring(posicion,posicion+1); 
document.formulario.dni.value=formulario.dni.value+"  "+letra; 

</script>
Y para colocar el formulario:
<form name="formulario"> 
DNI:<br> 
<input type="text" name="dni" maxlength="11" size="11"> 
<input type="button" value="OK" language="JavaScript" onclick="averigua()"> 
</form

Este es el resultado:

 
Verlo en ventana emergente.

Comentarios:
Creamos una función que hemos denominado averigua.
En ella, declaramos un string al que hemos llamado cadena con las letras ordenadas según se correspondan con las cifras del resto desde el 0 hasta el 22.
Hemos añadido al final, otra vez la letra correspondiente al resto 0.
Ahora declaramos la variable numérica posicion que se corresponde con el resto al dividir por 23 del value del dni que es el nombre que le hemos puesto a los datos introducidos en el formulario.
Ahora para asignar a ese número posición con la letra empleamos el método substring que lleva dos parámetros. Este método devuelve un string del string original con las letras que van desde el primer parámetro al segundo pero sin incluir este segundo.
Así por ejemplo:
cadena.substring(0,1) // se correspondería con la letra T
cadena.substring(2,3) // se correspondería con la letra W
Como le hemos pasado como parámetros posicion y posicion+1, solo devolverá la posición inicial porque ya el segundo está excluido.
Este es el motivo por el que se ha repetido la letra T al final.
Para poder acceder a la posición que se corresponde con el resto 22, con la letra, E
cadena substring(22, 23) // se correspondería con la letra E
En la siguiente línea del código lo que hacemos es añadir al formulario introducido por el usuario un espacio vacío y la letra correspondiente.

En el formulario HTML ponemos una caja de texto input del tipo text al que le ponemos como name dni y establecemos una longitud de 11 caracteres.
En el botón ponemos OK como texto y hacemos que al hacer clic sobre él se ponga en marcha la función averigua().

Obtenido en esta página:
http://www.desarrolloweb.com/articulos/1659.php

No hay comentarios:

Publicar un comentario