Questa è la funziona generalizzata:
codice:
//**********************************************************//
// //
// isCodiceFiscale(field)- return "OK","VUOTO" or "ERRATO" //
// //
// Funzione che controlla che il valore del campo del form //
// HTML <field> sia un codice fiscale valido //
// //
//**********************************************************//
function isCodiceFiscale(obj)
{
var nTempNum;
var nAppoNum;
var i;
var szTempCodFisc;
var szLastChar;
var szValued;
var szInValued;
szCodFisc = obj.value;
if (szCodFisc.length<16) return false
if (szCodFisc == "") return false;
else {
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 = i + 1;
if (i>15)
break;
szValued="A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ";
// I PARI
szInValued=szTempCodFisc.substr(i,1);
nAppoNum = szValued.search(szInValued);
nTempNum = nTempNum + (nAppoNum & 0x7FFE) / 2;
i = i + 1;
}
nTempNum = nTempNum % 26; //mod
szValued="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
szValued= szValued.substr(nTempNum, 1);
if (szValued==szLastChar) return true;
else return false;
}
}
E questo il controllo specifico del campo:
codice:
if ((aForm.cod_fisc.value==0) && !isCodiceFiscale(aForm.cod_fisc))
{
alert("Codice Fiscale non valido");
aForm.cod_fisc.focus();
return false;
}
P.S. Moderatori, ho già provveduto a linkarlo nel 3d delle discussioni utli.