Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con verifica partita iva e codice fiscale:

    Su internet ho trovato un codice per il controllo della Partita IVA e del Codice Fiscale.
    Ho provato a integrarlo nel mio vecchio script. Il controllo viene effettuato. Purtroppo, quando l'unico errore è quello della partita IVA il form cambia ugualmente pagina.
    Mi potete dire dove sbaglio e come faccio a risolvere il problema?
    Questo è il codice:


    <script language="JavaScript">
    <!--

    function ControllaCF(cf)
    {
    var validi, i, s, set1, set2, setpari, setdisp;
    if( cf == '' ) return '';
    cf = cf.toUpperCase();
    if( cf.length != 16 )
    return "La lunghezza del codice fiscale non è\n"
    +"corretta: il codice fiscale dovrebbe essere lungo\n"
    +"esattamente 16 caratteri.\n";
    validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for( i = 0; i < 16; i++ ){
    if( validi.indexOf( cf.charAt(i) ) == -1 )
    return "Il codice fiscale contiene un carattere non valido `" +
    cf.charAt(i) +
    "'.\nI caratteri validi sono le lettere e le cifre.\n";
    }
    set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    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 "Controlla il campo del codice fiscale:\n"+
    "il codice di controllo non corrisponde.\n";
    return "";
    }


    function ControllaPIVA(pi)
    {
    if( pi == '' ) return '';
    if( pi.length != 11 )
    return "La lunghezza della partita IVA non è\n" +
    "corretta: la partita IVA dovrebbe essere lunga\n" +
    "esattamente 11 caratteri.\n";
    validi = "0123456789";
    for( i = 0; i < 11; i++ ){
    if( validi.indexOf( pi.charAt(i) ) == -1 )
    return "La partita IVA contiene un carattere non valido `" +
    pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n";
    }
    s = 0;
    for( i = 0; i <= 9; i += 2 )
    s += pi.charCodeAt(i) - '0'.charCodeAt(0);
    for( i = 1; i <= 9; i += 2 ){
    c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
    if( c > 9 ) c = c - 9;
    s += c;
    }
    if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
    return "Controlla il campo della partita IVA:\n" +
    "il codice di controllo non corrisponde.\n";
    return '';
    }



    function validateForm_prev(){
    formObj = document.form_b;
    if (formObj.nome.value == "") {
    alert("Non hai inserito il tuo Nome!");
    return false;
    }

    else if (formObj.cod.value == "") {
    alert("Non hai inserito il tuo Codice Fiscale o Partita IVA ");
    return false;
    }

    else if (formObj.email.value == "") {
    alert("Non hai inserito il tuo indirizzo email!");
    return false;
    }


    else if (!formObj.autorizzo.checked) {
    alert("Per continuare accettare il trattamento dei dati personali!");
    return false;
    }

    else if (cod = document.form_b.cod.value) {
    document.form_b.cod.focus();

    if( cod == '' )
    err = "hai lasciato in bianco il campo!\n";
    else if( cod.length == 16 )
    err = ControllaCF(cod);
    else if( cod.length == 11 )
    err = ControllaPIVA(cod);
    else
    err = "Controlla il campo del Codice Fiscale o della Partita IVA.\n";
    if( err > '' )
    alert(err);
    }

    }

    // Fine codice javascript. -->
    </script>
    <form method="post" action="invia_dati.php" name="form_b" id="form_b" enctype="multipart/form-data">
    ..............
    <input name="submit" id="submit" tabindex="5" value="Invia dati" type="submit" onClick="return validateForm_prev()"/>
    </form>

  2. #2

  3. #3
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    <form method="post" action="invia_dati.php" name="form_b" id="form_b" enctype="multipart/form-data" onsubmit="return validateForm_prev()">
    ..............
    <input name="Submit" id="Submit" tabindex="5" value="Invia dati" type="submit"/>
    </form>
    Il controllo si fa sull'evento onsubmit del form, fatto sull'onclick del pulsante submit (che non puo' avere name="submit" ) fa vedere gli eventuali alert ma non impedisce l'invio del form.

    codice:
    function validateForm_prev(){
    	formObj = document.form_b;
    	if (formObj.nome.value == "") {
    		alert("Non hai inserito il tuo Nome!");
    		return false;
    	}
    
    	if (formObj.cod.value == "") {
    		alert("Non hai inserito il tuo Codice Fiscale o Partita IVA ");
    		return false;
    	}
    
    	if (formObj.email.value == "") {
    		alert("Non hai inserito il tuo indirizzo email!");
    		return false;
    	}
    
    	if (!formObj.autorizzo.checked) {
    		alert("Per continuare accettare il trattamento dei dati personali!");
    		return false;
    	}
    
    	wcod = document.form_b.cod.value;
    	if( wcod == '' ) {
    		err = "hai lasciato in bianco il campo!\n"
    	} else {
    		if( wcod.length == 16 ) 
    			err = ControllaCF(wcod);
    		else if( wcod.length == 11 ) 
    			err = ControllaPIVA(wcod);
    		else
    			err = "la lunghezza del codice e' errata!\n";
    	}
    	if( err > '' ) {
    		alert(err);
    		document.form_b.cod.focus();
    		return false;
    	} 
    }
    L'use degli else if l'ho eliminato perche' (a me ) rende poco chiaro il flusso delle istruzioni... se sei convinto ripristinalo
    Non puoi usare i nomi delle variabili uguali ai nomi dei campi del form... il javascript (soppratutto in IE) impazzisce a cercare di capire di quale oggetto nella pagina tu stai parlando.
    L'ultima parte della funzione e' cambiata... studiala per capirne il motivo, e' solo una delle possibili soluzioni, ovviamente.

    codice:
    function ControllaCF(cf) {
    	var validi, i, s, set1, set2, setpari, setdisp;
    	if( cf == '' ) return '';
    	cf = cf.toUpperCase();
    	if( cf.length != 16 )
    		return "La lunghezza del codice fiscale non è\n"
    		+"corretta: il codice fiscale dovrebbe essere lungo\n"
    		+"esattamente 16 caratteri.\n";
    	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    	for( i = 0; i < 16; i++ ) {
    		if( validi.indexOf( cf.charAt(i) ) == -1 )
    			return "Il codice fiscale contiene un carattere non valido `" +
    			cf.charAt(i) +
    			"'.\nI caratteri validi sono le lettere e le cifre.\n";
    	}
    	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    	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 "Controlla il campo del codice fiscale:\n"+
    		"il codice di controllo non corrisponde.\n";
    	return "";
    }
    
    
    function ControllaPIVA(pi) {
    	if( pi == '' ) return '';
    	if( pi.length != 11 )
    		return "La lunghezza della partita IVA non è\n" +
    		"corretta: la partita IVA dovrebbe essere lunga\n" +
    		"esattamente 11 caratteri.\n";
    	validi = "0123456789";
    	for( i = 0; i < 11; i++ ){
    		if( validi.indexOf( pi.charAt(i) ) == -1 )
    			return "La partita IVA contiene un carattere non valido `" +
    			pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n";
    	}
    	s = 0;
    	for( i = 0; i <= 9; i += 2 )
    		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
    	for( i = 1; i <= 9; i += 2 ){
    		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
    		if( c > 9 ) c = c - 9;
    		s += c;
    	}
    	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
    		return "Controlla il campo della partita IVA:\n" +
    		"il codice di controllo non corrisponde.\n";
    	return '';
    }
    Nulla da dire sulle ultime due funzioni, le ho solo indentate per leggibilita'.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  4. #4

    Funziona!!!

    Grazie 1000!
    Adesso funziona alla perfezione!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.