Salve a tutti!
La funzione è questa:
La funzione la chiamo da qui:codice:function Check_Cod_Fisc(Cod_Fisc) { var strcognome strcognome="" // Processa il cognome //---------------------------------------------------------------- for (i=0; i<document.MioForm.Cognome.value.length; i++) { switch (document.MioForm.Cognome.value.charAt(i)) { case 'A': case 'E': case 'I': case 'O': case 'U': break; default : if((document.MioForm.Cognome.value.charAt(i)<='Z')&& (document.MioForm.Cognome.value.charAt(i)>'A')) { strcognome = strcognome + document.MioForm.Cognome.value.charAt(i); } } } if (strcognome.length < 3) { for (i=0; i<document.MioForm.Cognome.value.length; i++) { switch (document.MioForm.Cognome.value.charAt(i)) { case 'A': case 'E': case 'I': case 'O': case 'U': strcognome = strcognome + document.MioForm.Cognome.value.charAt(i); } } if (strcognome.length < 3) { for (i=strcognome.length; i<=3; i++) { strcognome = strcognome + 'X'; } } } strcognome = strcognome.substring(0,3); //------------------------------------------------------------ var strnome strnome="" // processa il nome //---------------------------------------------------------------- for (i=0; i<document.MioForm.Nome.value.length; i++) { switch (document.MioForm.Nome.value.charAt(i)) { case 'A': case 'E': case 'I': case 'O': case 'U': break; default: if((document.MioForm.Nome.value.charAt(i)<='Z')&& (document.MioForm.Nome.value.charAt(i)>'A')) { strnome = strnome + document.MioForm.Nome.value.charAt(i); } } } if (strnome.length > 3) { strnome = strnome.substring(0,1) + strnome.substring(2,4); } else { if (strnome.length < 3) { for (i=0; i<document.MioForm.Nome.value.length; i++) { switch (document.MioForm.Nome.value.charAt(i)) { case 'A': case 'E': case 'I': case 'O': case 'U': strnome = strnome + document.MioForm.Nome.value.charAt(i); } } if (strnome.length < 3) { for (i=strnome.length; i<=3; i++) {strnome = strnome + 'X';} } } strnome = strnome.substring(0,3); } var strnc strnc=strcognome+strnome ; //--------------------------------------- Fine processa nome var strCod_Fisc strCod_Fisc = Cod_Fisc var somma = 0 var chrcontrollo = ' ' var mycod = " " mycod = strCod_Fisc for (i=0; i<15; i++) { if (((i+1) % 2) != 0) //caratteri dispari { switch (mycod.charAt(i)) { case '0': case 'A':{ somma += 1; break;} case '1': case 'B':{ somma += 0; break;} case '2': case 'C':{ somma += 5; break;} case '3': case 'D':{ somma += 7; break;} case '4': case 'E':{ somma += 9; break;} case '5': case 'F':{ somma += 13; break;} case '6': case 'G':{ somma += 15; break;} case '7': case 'H':{ somma += 17; break;} case '8': case 'I':{ somma += 19; break;} case '9': case 'J':{ somma += 21; break;} case 'K':{ somma += 2; break;} case 'L':{ somma += 4; break;} case 'M':{ somma += 18; break;} case 'N':{ somma += 20; break;} case 'O':{ somma += 11; break;} case 'P':{ somma += 3; break;} case 'Q':{ somma += 6; break;} case 'R':{ somma += 8; break;} case 'S':{ somma += 12; break;} case 'T':{ somma += 14; break;} case 'U':{ somma += 16; break;} case 'V':{ somma += 10; break;} case 'W':{ somma += 22; break;} case 'X':{ somma += 25; break;} case 'Y':{ somma += 24; break;} case 'Z':{ somma += 23; break;} } } else //caratteri pari { switch (mycod.charAt(i)) { case '0': case 'A':{ somma += 0; break;} case '1': case 'B':{ somma += 1; break;} case '2': case 'C':{ somma += 2; break;} case '3': case 'D':{ somma += 3; break;} case '4': case 'E':{ somma += 4; break;} case '5': case 'F':{ somma += 5; break;} case '6': case 'G':{ somma += 6; break;} case '7': case 'H':{ somma += 7; break;} case '8': case 'I':{ somma += 8; break;} case '9': case 'J':{ somma += 9; break;} case 'K':{ somma += 10; break;} case 'L':{ somma += 11; break;} case 'M':{ somma += 12; break;} case 'N':{ somma += 13; break;} case 'O':{ somma += 14; break;} case 'P':{ somma += 15; break;} case 'Q':{ somma += 16; break;} case 'R':{ somma += 17; break;} case 'S':{ somma += 18; break;} case 'T':{ somma += 19; break;} case 'U':{ somma += 20; break;} case 'V':{ somma += 21; break;} case 'W':{ somma += 22; break;} case 'X':{ somma += 23; break;} case 'Y':{ somma += 24; break;} case 'Z':{ somma += 25; break;} } } } somma %= 26; switch (somma) { case 0: {chrcontrollo='A'; break;} case 1: {chrcontrollo='B'; break;} case 2: {chrcontrollo='C'; break;} case 3: {chrcontrollo='D'; break;} case 4: {chrcontrollo='E'; break;} case 5: {chrcontrollo='F'; break;} case 6: {chrcontrollo='G'; break;} case 7: {chrcontrollo='H'; break;} case 8: {chrcontrollo='I'; break;} case 9: {chrcontrollo='J'; break;} case 10: {chrcontrollo='K'; break;} case 11: {chrcontrollo='L'; break;} case 12: {chrcontrollo='M'; break;} case 13: {chrcontrollo='N'; break;} case 14: {chrcontrollo='O'; break;} case 15: {chrcontrollo='P'; break;} case 16: {chrcontrollo='Q'; break;} case 17: {chrcontrollo='R'; break;} case 18: {chrcontrollo='S'; break;} case 19: {chrcontrollo='T'; break;} case 20: {chrcontrollo='U'; break;} case 21: {chrcontrollo='V'; break;} case 22: {chrcontrollo='W'; break;} case 23: {chrcontrollo='X'; break;} case 24: {chrcontrollo='Y'; break;} case 25: {chrcontrollo='Z'; break;} } //-------------------------------------------- if (chrcontrollo == mycod.charAt(15)&&(Cod_Fisc.substring(0,6)==strnc)) { return true; } else { alert("Codice Fiscale non valido"); // Cod_Fisc.focus(); return false; } }
L'errore che mi salta fuori è "previsto oggetto".codice:<td> <input type="text" name="CodFisc" maxlength=16 value="" onBlur="if (this.value.length!=0 || this.value!=''){Check_Cod_Fiscale(this.value); return true}"> </td>
Sapete aiutarmi a capire perchè?
Domandina (da completo newbie del JS):
il messaggio di errore mi specifica un numero di riga ed un carattere, cosa che (penso) dovrebbe aiutarmi a risolvere più facilmente i problemi. Come vengono calcolate, però, le righe?
Cioè, si conta solo il codice client-side (penso di sì)? Si considerano solo le righe scritte o anche quelle che contengono solo spazi vuoti? Ho provato ad andare alla riga specificata, ma non c'ho trovato niente di strano...![]()
Grazie in anticipo a tutti!
EDIT:
Il controllo del codice fiscale lo eseguo solo sul nome e sul cognome perchè solo questi dati ho a disposizione... sempre meglio che non controllarlo affatto...

Rispondi quotando
devono essere univoci
