Il controllo si fa sull'evento onsubmit del form, fatto sull'onclick del pulsante submit (che non puo' avere name="submit"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>) fa vedere gli eventuali alert ma non impedisce l'invio del form.
L'use degli else if l'ho eliminato perche' (a mecodice: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; } }) 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.
Nulla da dire sulle ultime due funzioni, le ho solo indentate per leggibilita'.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 ''; }
ciao

) fa vedere gli eventuali alert ma non impedisce l'invio del form.
) rende poco chiaro il flusso delle istruzioni... se sei convinto ripristinalo
Rispondi quotando