Ciao a tutti,
sto cercando di inserire nel controllo form in javascript, la validazione del campo Codice Fiscale/Partita IVA, basato sull'algoritmo reperibile in www.finanze.it.
Ho trovato gli script, uno è questo:
<SCRIPT>
function codiceFISCALE(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 false;
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 false;
return true;
}
</SCRIPT>
L'altro è questo:
<SCRIPT>
function partitaIVA(sz_Codice)
{
var n_Val,n_Som1=0,n_Som2=0,lcv;
if (sz_Codice.length!=11 || isNaN(parseFloat(sz_Codice)) || parseFloat(sz_Codice)<parseFloat(0))
return false;
for (lcv=0;lcv<9;lcv+=2)
{
n_Val=parseInt(sz_Codice.charAt(lcv));
n_Som1+=n_Val;
n_Val=parseInt(sz_Codice.charAt(lcv+1));
n_Som1+=Math.floor(n_Val/5) + (n_Val<<1) % 10;
}
n_Som2 = 10 - (n_Som1 % 10);
n_Val=parseInt(sz_Codice.charAt(10));
if (n_Som2==n_Val)
return true;
return false;
}
</SCRIPT>
Io però ho la necessità di utilizzare un solo campo di form per raccogliere uno o l'altro valore.
Per cui, vorrei fare una funzione che rileva la lunghezza della stringa inserita nel campo form e a seconda che sia lunga 16 o 11 dirgli di eseguire il controllo Cod Fisc o Part IVA.
Purtroppo non sono molto forte in javascript.![]()
Sono riuscita giusto a fare il controllo dei campi vuoti:
<SCRIPT LANGUAGE=\"JavaScript\">
<!--
function checkForm(iscrizione){
if (iscrizione.ragione_sociale.value == '') {
alert('ATTENZIONE: Ragione Sociale obbligatoria!');
iscrizione.ragione_sociale.focus();
return false;
}
else if (iscrizione.indirizzo.value == '') {
alert('ATTENZIONE: Indirizzo obbligatorio!');
iscrizione.indirizzo.focus();
return false;
}
else if (iscrizione.localita.value == '') {
alert('ATTENZIONE: Località obbligatorio!');
iscrizione.localita.focus();
return false;
}
else if (iscrizione.provincia.value == '') {
alert('ATTENZIONE: Provincia obbligatorio!');
iscrizione.provincia.focus();
return false;
}
else if (iscrizione.cognome_resp.value == '') {
alert('ATTENZIONE: Cognome Responsabile obbligatorio!');
iscrizione.cognome_resp.focus();
return false;
}
else if (iscrizione.nome_resp.value == '') {
alert('ATTENZIONE: Nome Responsabile obbligatorio!');
iscrizione.nome_resp.focus();
return false;
}
else if (!iscrizione.email_resp.value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/)){
alert('ATTENZIONE: Inserire Email Responsabile valida!');
iscrizione.email_resp.focus();
return false;
}
else if (iscrizione.username.value == '') {
alert('ATTENZIONE: Username Responsabile obbligatorio!');
iscrizione.username.focus();
return false;
}
else if (iscrizione.accetto_condizioni.checked == false )
{
alert('Accetta le \"condizioni di utilizzo\" per favore');
return false;
}
else
return true;
}
// -->
</script>
Oltre non riesco ad andare.
Qualcuno può aiutarmi?
Vi prego sto rincretinendo...![]()

Rispondi quotando