miércoles, 27 de enero de 2016

La letra del DNI (2)

Una vez publicada la entrada anterior, he estado observando y estudiando otros resultados.
En concreto quería incluir la posibilidad de que si alguien introduce un número que no es un número o que no tiene las ocho cifras reglamentarias, se mostrase un mensaje de error.


Ya lo he conseguido.
He modificado el código para que testee:
<script> 
function averigua () 

if (!/^\d{8}$/.test(formulario.dni.value)) {
  alert ("El número introducido no es válido");
  return false;
}else{
cadena="TRWAGMYFPDXBNJZSQVHLCKE"; 
posicion = formulario.dni.value % 23; 
letra = cadena.substring(posicion,posicion+1); 
document.formulario.dni.value=formulario.dni.value+"  "+letra;
return true;}

</script>
Y para colocar el formulario:
<form name="formulario"> 
DNI:
<input type="text" name="dni" maxlength="8" size="11" value="DNI sin letra" onclick = "if(this.value=='DNI sin letra') this.value=''"> 
<input type="button" value="OK" language="JavaScript" onclick="averigua()"> 
</form>

Este es el resultado:

Verlo en ventana emergente.

Comentarios:
1.- La línea de la condición:
if (!/^\d{8}$/.test(formulario.dni.value)) {
Lo que hace es comprobar si lo que se ha introducido es una cadena de ocho cifras todas seguidas y sin huecos.
2.- En el caso de que no sea así salta la ventanita de alerta.
3.- En caso contrario se ejecuta el else.
4.- He comprobado que no es necesario añadir al final de la cadena otra vez la primera letra. El substring funciona correctamente aunque el segundo parámetro sobrepase la dimensión de la cadena.
5.- En el formulario he introducido un maxlength para impedir que se puedan introducir más de ocho caracteres.
maxlength="8"
6.- También he puesto un valor inicial:
value="DNI sin letra"
7.- Que se borra al hacer clic sobre él.
onclick = "if(this.value=='DNI sin letra') this.value=''"

No hay comentarios:

Publicar un comentario