Newsgroup: it.comp.lang.javascript
Titolo: algoritmo codice fiscale

ciao,
nessuno mi sa indicare un algoritmo per il calcolo della  chiave  finale di
un  cod.fiscale ?
(ad es.   PRR CNF 69 H 13 G 205  x -----> avrą una  chiave finale alfabetica
unica   x )
grazie.

ciao,
www.probo.it/javascript/esempi/codice_fiscale
è lento perché pesca da un elenco di + di 8000
comuni ...
però il meccanismo per determinare il codice fiscale
c'è !
--
Bye
Ro<*¿*>berto

sotto il tuo testo ho incolato uno script che verifica che il valore del
carattere di controllo di un codice fiscale sia quello corretto
il modulo VALIDCF puo' essere incolato all'interno di uno script che avevo
postato un paio di settimane fa, che comprendeva altri moduli di controllo
(obbligatorieta' del campo, correttezza di un indirizzo mail, campo di soli
numeri interi)... in ogni caso funziona bene anche da solo.
Dal codice puoi ricavare ficilmente l'algoritmo di controllo
ciao
aldo (
http://www.gruppo4.com
)
  ------------------------------------------------------------------------
   ciao,
   nessuno mi sa indicare un algoritmo per il calcolo della  chiave  finale
di un  cod.fiscale ?
   (ad es.   PRR CNF 69 H 13 G 205  x -----> avrà una  chiave finale
alfabetica unica   x ) grazie.
     ------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"
http://www.w3.org/TR/REC-html40/loose.dtd
">
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=iso-8859-1">
<TITLE>controllo Codice ficale</TITLE>
<SCRIPT TYPE="text/javascript"><!--
/****************************************************************
FUNCTION CONTROLLAFORM
Script from 
sup...@gruppo4.com
 - 
http://www.gruppo4.com
You can use this code if you leave this message
****************************************************************/
function getString() {
validCFList= "cFis1"
validCFNameList = "Codice Fiscale"
}
/*da qui in poi la funzione puo' essere scritta in un foglio js*/
function controllaForm(nomeForm,action){
var alrtMsg = "ATTENZIONE!"
var msg1 = "\rIl campo "
var msg2 = "\rI campi "
var mbMsg1 = " non e' stato compilato"
var mbMsg2 = " non sono stati compilati"
var vmMsg1 = " contiene dati non validi"
var vmMsg2 = " contengono dati non validi"
var oiMsg1 = " puo' contenere solo numeri"
var oiMsg2 = " possono contenere solo numeri"
/*definizione delle variabili e richiamo dei loro valori*/
mustBeList = ""
mustBeNameList = ""
validMailList = ""
validMailNameList = ""
onlyIntegerList= ""
onlyIntegerNameList = ""
validCFList = ""
validCFNameList = ""
getString()
/****************************************************************
MODULO VALIDCF
****************************************************************/
if (validCFList != "") {
/*creazione degli array*/
validCFArray = validCFList.split(",");
validCFNameArray = validCFNameList.split(",")
tempArray = new Array()
tempNameArray = new Array()
var e = 0
var n = 0
/*loop su tutti i form.elements per popolare il tempArray
(nome esistente, non vuoto, contenuto in validCFList)*/
for (i = 0; i < nomeForm.length; i++) {
if
((nomeForm[i].name!="")&&(nomeForm[i].value!="")&&(validCFList.indexOf(nomeF
orm[i].name)!=-1)) {
tempArray[e]=i; e= e+1;
}
}
/*loop su tempArray*/
for (e = 0; e < tempArray.length; e++) {
i=tempArray[e]
/*per ogni elemento si individua la posizione 'j' in validCFArray e in
validCFNameArray*/
for (k = 0; k < validCFArray.length; k++) {
if (validCFArray[k]==nomeForm[i].name) {j=k;}
}
/*il campo deve contenere 16 caratteri*/
var validate = true
if (nomeForm[i].value.length!=16) {validate = false;}
else {
/*verifica del carattere di controllo*/
var alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var numb = "0123456789"
var disp = "1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23"
var cc=0
for (c=0; c<(nomeForm[i].value.length-1); c++) {
mod2 = (c%2)
isAlfa = (isNaN(nomeForm[i].value.charAt(c)))
cfChar= nomeForm[i].value.charAt(c).toUpperCase()
switch (mod2) {
case 0:
switch (isAlfa) {
case true: cc+=parseInt(disp.split(",")[alfa.indexOf(cfChar)]);break;
case false: cc+=parseInt(disp.split(",")[numb.indexOf(cfChar)]);break;
};
break;
case 1:
switch (isAlfa) {
case true: cc+=parseInt(alfa.indexOf(cfChar));break;
case false: cc+=parseInt(numb.indexOf(cfChar));break;
};
break;
}
}
if (cc%26!=alfa.indexOf(nomeForm[i].value.charAt(15).toUpperCase()))
{validate = false;}
}
if (validate==false){tempNameArray[n] = validCFNameArray[j];n+=1;}
}
/*se il loop del validCF ha trovato errori*/
if (tempNameArray.length!=0){
if(tempNameArray.length==1) {alrtMsg += (msg1 + tempNameArray.join(", ") +
vmMsg1);}
else {alrtMsg += (msg2 + tempNameArray.join(", ") + vmMsg2);}
}
}
/*se ci sono errori mostra l'alert, altrimenti andiamo all'URL definito
nella chiamata*/
if (alrtMsg!="ATTENZIONE!") {alert (alrtMsg)}
else {window.location.href=action}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<!-- form -->
<DIV ALIGN="center">
<FORM METHOD="post" NAME="myForm">
<TABLE CELLPADDING="4" CELLSPACING="0" BORDER="2">
<TR>
<TH>MY FORM</TH>
</TR>
<TR>
<TD>CODICE FISCALE&nbsp;
<INPUT TYPE="text" NAME="cFis1" SIZE="30">
</TD>
</TR>
<TR>
<TH>
<INPUT TYPE="Reset" VALUE="Reset">
<INPUT TYPE="button" VALUE="CONTROLLA"
ONCLICK="controllaForm(document.myForm,'javascript:document.myForm.submit()'
)">
</TH>
</TR>
</TABLE>
</FORM>
</DIV>
</BODY>
</HTML>
--
Posted from 
DNS.GRUPPO4.COM
 [193.70.107.66] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG