<HTML>
<HEAD>
<TITLE>Controllo Codice Fiscale per carattere</TITLE>
<SCRIPT>
<!--
function controlla()
{
cod=document.modulo.codice.value.toLowerCase();
check=true;
if (cod.length!=16)
check=false
else
{
lettere=cod.substr(0,6)+cod.substr(8,1)+cod.substr(11,1)+cod.substr(15);
numeri=cod.substr(6,2)+cod.substr(9,2)+cod.substr(12,3);
for (i=0;i<10;i++)
if (lettere.charCodeAt(i)<97 || lettere.charCodeAt(i)>122)
check=false;
for (i=0;i<8;i++)
if (numeri.charCodeAt(i)<48 || numeri.charCodeAt(i)>57)
check=false;
}
document.modulo.risultato.value=check;
}
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff">
<FORM NAME="modulo">
Codice: <INPUT TYPE="text" NAME="codice" VALUE="PNCPLN75D24E506W" CLASS=""> <BR>
Risultato: <INPUT TYPE="text" NAME="risultato" VALUE="" CLASS=""> <BR>
<INPUT TYPE="button" VALUE=" Controlla " onClick="controlla()">
</FORM>
</BODY>
</HTML>
|
Nella variabile
cod viene memorizzata la stringa letta dal campo di'inserimento, e viene settata a
true una variabile che ci servirà per il controllo. Il dato letto viene convertito in lettere minuscole per comodità.
Il primo controllo è sulla lunghezza ovviamente, se la condizione è verificata (cioè se la lunghezza di
cod è diversa da 16) la variabile di controllo cambia stato, e l'
else, che dovrebbe controllare i caratteri non viene nemmeno eseguito.
Alla fine della funzione il valore del campo "risultato" nel form assume il valore di
check che in caso di lunghezza errata sarà ovviamente
false.
Se invece il controllo viene passato, la funzione continua memorizzando nelle due variabili "lettere" e "numeri" i caratteri che trova nelle posizioni della stringa in cui ci aspetteremmo di trovare le une o gli altri.
Subito dopo i due cicli controllano che il codice ASCII della stringa
lettere sia compreso fra 97 (lettera "a") e 122 (lettera "z") e che il codice della stringa
numeri sia compreso fra 48 (lo zero) e 57 (il nove).
Se il codice ASCII di una delle lettere o numeri è fuori dai limiti la solita variabile
check cambia di stato in
false a decretare l'inesattezza del dato inserito.
Circa 15 righe di codice che con le RegExp si riducono a due! :-)