Originariamente inviato da nazario79
Ciao a tutti torno a chiedere il vostro aiuto.
ho un problema con questo script, in generale funziona tutto ci sono solo due problemi.
La funzione ControllaCF dovvrebbe accettare solo caratteri maiuscoli, invece accetta sia minuscoli che maiuscoli.
Mentre mi sono accorto che se si inseriscono 16 caratteri non rispettando l'ordine " 6 lettere 2 numeri 1 lettera 2 numeri 1 lettera 3 numeri 1 lettera ma li inserisco a caso il codice fiscale viene validato, stessa cosa se inserisco 16 caratteri tutti uguali oppure numeri viene validato comunque e procede all'inserimento nel DB, come posso risolvere questi problema ? dov'è l'errore?
io non sono molto pratico e sono arrivato a realizzare questo script dopo mille peripezie e consigli.
Giusto perchè poi mi verrà chiesto , il campo ControllaCF(mail.value); viene chiamato mail ma solo perchè è un db di prova non mio e quindi lo lascio così poi lo sistemerò!!!
Grazie a tutti per il vostro aiuto
codice:
//verifica codice fiscale
function ControllaCF(cf)
{
var validi, i, s, set1, set2, setpari, setdisp;
if( cf == '' ) return "Errore: compilare il campo CODICE FISCALE";
cf = cf.toUpperCase();
if( cf.length != 16 )
return "La lunghezza del codice fiscale non è\n"
+"corretta: il codice fiscale dovrebbe essere lungo\n"
+"esattamente 16 caratteri.\n";
validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for( i = 0; i < 16; i++ ){
if( validi.indexOf( cf.charAt(i) ) == -1 )
return "Il codice fiscale contiene un carattere non valido `" +
cf.charAt(i) +
"'.\nI caratteri validi sono le lettere e le cifre.\n";
}
set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
s = 0;
for( i = 1; i <= 13; i += 2 )
s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
for( i = 0; i <= 14; i += 2 )
s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
return "Il codice fiscale non è corretto:\n";
return "OK";
}
// verifica che tutti i campi form siano popolati
function controllo(){
with(document.InsUtenteZS) {
if(realzs.value=="") {
alert("Errore: compilare il campo USERNAME");
realzs.focus();
return false;
}
if(PWUtente.value=="") {
alert("Errore: compilare il campo PASSWORD");
PWUtente.focus();
return false;
}
if(nome.value=="") {
alert("Errore: compilare il campo NOME");
nome.focus();
return false;
}
if(cognome.value=="") {
alert("Errore: compilare il campo COGNOME");
cognome.focus();
return false;
}
if(luogo.value=="") {
alert("Errore: compilare il campo LUOGO DI NASCITA");
luogo.focus();
return false;
}
if(ident.value=="") {
alert("Errore: compilare il campo CARTA D'IDENTITA");
ident.focus();
return false;
}
returnCode = ControllaCF(mail.value);
if(returnCode != "OK"){
alert(returnCode);
mail.focus();
return false;
}
}
alert("Controllo effettuato con successo. Il modulo sarà inviato.");
return true;
}