C'e` un errore di indentazione (che non pregiudica l'uso della funzioen, ma crea confusione all'umano.
Provo a riscrivere la funzione (sistemando le indentazioni come piace a me per poterle seguire meglio), e ti inserisco degli alert:
Ho trovato anche un uso improprio dell'oggetto form1 (non definito all'interno della funzione) - correttocodice:<html> <head> <script type="text/javascript" language="javascript"> function isCodiceFiscale(obj) { var nTempNum; var nAppoNum; var i; var szTempCodFisc; var szLastChar; var szValued; var szInValued; szCodFisc = obj.value; alert("test1: "+szCodFisc); if (szCodFisc.length<16) { alert("Caratteri insufficienti"); obj.focus(); return false; } if (szCodFisc == "") { alert("Campo vuoto"); obj.focus(); return false; } szCodFisc =szCodFisc.toUpperCase(); szLastChar = szCodFisc.substr(szCodFisc.length - 1,1); szTempCodFisc =szCodFisc.substr(0,szCodFisc.length - 1); nTempNum = 0; i = 0; while (true) { szValued=" B1A0KKPPLLC2QQD3RRE4VVOOSSF5TTG6UUH7MMI8NNJ9WWZZYYXX"; // I DISPARI szInValued=szTempCodFisc.substr(i,1); nAppoNum = szValued.search(szInValued); nTempNum = nTempNum + (nAppoNum & 0x7FFE) / 2; i++; if (i>15) break; szValued=" A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ"; // I PARI szInValued=szTempCodFisc.substr(i,1); nAppoNum = szValued.search(szInValued); nTempNum = nTempNum + (nAppoNum & 0x7FFE) / 2; i++; } nTempNum = nTempNum % 26; //mod szValued="ABCDEFGHIJKLMNOPQRSTUVWXYZ"; szValued= szValued.substr(nTempNum, 1); if (szValued==szLastChar) { alert("Codice Fiscale valido"); return true; } else { alert("Codice Fiscale non valido"); obj.focus(); return false; } // if ((obj.value=='') && !isCodiceFiscale(obj)) { // alert("Codice Fiscale non valido"); // obj.focus(); // return false; // } else { // alert("Codice Fiscale valido"); //// obj.form.cod_fisc.focus(); // return false; // } } </script> </head> <body> <form name="form1"> Codice Fiscale <input type="text" name="fiscale"> <input type="button" value="aaaaaaaaa" onclick="isCodiceFiscale(this.form.fiscale);"> </form>
L'ultima parte, in cui la funzione richiama se stessa passando lo stesso parametro non riesco a seguirla, e la ho tolta, sostituendo i messaggi nei vari return.
Non so se ora funziona (e` un po' troppo complesso, e non ho tempo di implementarlo io), ma provalo.

Rispondi quotando