Ciao, in effetti avevo letto delle regular ma essendo io un autodidatta faccio un bel po di fatica.
Ho comunque trovato un post su di un forum che trattava appunto le regular per la validazione del codice fiscale, ho fatto 2 modifiche stupide ( solo due return false )e le mie belle prove e devo dire che funziona.
Ovvio che non posso avere la certezza dei dati inseriti, ma è pur sempre un controllo in più!
Al momento funziona tutto e a quanto pare anche il calcolo dell'ultimo numero, sto facendo delle prove con dei codici reali e provando a cambiare alcune cifre a caso in effetti la funzione mi avvisa dell'errore del CF.
Inoltre ho notato che funziona anche l'obbligo di inserire il codice con l'ordine ccccccnncnncnnnc
quindi sembra risolto il problema che avevo in precedenza.
Ad ora l'ho testato con circa 200 utenti che mi hanno dato un feedback positivo sui risultati ottenuti, errore in caso di codice errato e validazione in caso di codice corretto.
Rimane ancora una questione che è quella del carattere.
Se non ho capito male la stringa " var cf = cfins.toUpperCase();" dovrebbe accettare l'inserimento di soli caratteri Maiuscoli ma è probabile che non abbia capito bene.
Posto comunque il tutto magari può servire.
Per ora mi ritengo soddisfatto.
Grazie a tutti per l'aiuto
codice:
function controllaCF(cfins){
var cf = cfins.toUpperCase();
var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
if (!cfReg.test(cf))
return "Errore: CODICE FISCALE non valido";
var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
var 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 "Errore: CODICE FISCALE non valido";
return true;
}
// funzione che 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 != true){
alert(returnCode);
mail.focus();
return false;
}
}
alert("Tutti i dati sono stati inseriti correttamente.");
return true;