funzione javascript per validazione form

ari

Utente Attivo
6 Set 2007
34
0
0
Ragazzi, ho bisogno di aiuto. Di javascript sono completamente ignorante, ma seguendo alcune guide sto provando a capirci qualcosa. Ora, mi trovo a dover validare una form tramite javascript, ma quando premo il button al click del quale dovrebbe partire la funzione, non succede nulla, mi appare solo il messaggio "errore nella visualizzazione della pagina" sulla barra inferiore di IE. Ecco parte del codice della form, all'interno della quale è dichiarata anche la funzione:

<head>
<title> Registrazione utente </title>
<script type="text/javascript">
<!--
function validaReg() {
var ID = document.registrazione.id.value;
var PW = document.registrazione.pw.value;
var CPW = document.registrazione.cpw.value;
var MAIL = document.registrazione.mail.value;
var CMAIL = document.registrazione.c_mail.value;

var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;


if ((ID == "") || (ID == "undefined") || (PW == "") || (PW == "undefined") || (CPW == "") || (CPW == "undefined") || (MAIL == "") || (MAIL == "undefined") || (CMAIL == "") || (CMAIL == "undefined")) {
alert("Attenzione, devi riempire tutti i campi!");
document.registrazione.id.focus();
return false;
}
elseif (PW != CPW) {
alert("La password confermata è diversa da quella scelta, controllare.");
document.registrazione.cpw.value = "";
document.registrazione.cpw.focus();
return false;
}

elseif (!email_reg_exp.test(MAIL)) {
alert("Inserire un indirizzo email corretto.");
document.registrazione.mail.select();
return false;
}

elseif (MAIL != CMAIL) {
alert("L'indirizzo e-mail ripetuto è diverso da quello inserito, controllare.");
document.registrazione.c_mail.value = "";
document.registrazione.c_mail.focus();
return false;
}

else{
document.registrazione.action = "registra.php";
document.registrazione.submit();
}
}
//-->
</script>
</head>

<body>
<form name="registrazione" method ="post">

[...]\\inserisco i vari campi


<input type="button" value="Indietro" onClick="javascript:history.back()" name="button">
<input type="reset" value="Cancella Tutto"/>
<input type="button" value="Registra" onClick="validaReg();"/> <br/>
</form>
</body>
</html>



Premetto che inizialmente avevo provato a mettere la funzione in un file esterno, ma per evitare altre possibilità di errore ora l'ho messa all'interno.



Visto che il button "Indietro", non credo sia un problema di mancata abilitazione di Javascript. Qualcuno di voi sa darmi una mano? Dov'è che ho sbagliato?

Inoltre, nell'istruzione:

<input type="button" value="Registra" onClick="validaReg();"/>

Ci va o no il ";" ? Ho provato sia con che senza ma niente. HELP!!!
 

jan267

Utente Attivo
6 Mar 2003
1.956
2
38
31
Milano
twitter.com
Ciao,
prova prima di tutto a correggere questo errore di sintassi: elseif in else if!
Poi se fossi in te io utilizzerei gli id (document.getElementById) al posto di document.registrazione.xxx.value... ma questo è un parere mio.
 
Ultima modifica:

ari

Utente Attivo
6 Set 2007
34
0
0
Ho corretto l'else if :eek: !! Grazie. Cmq il problema non cambia.
Per l'altro suggerimento, davo cambiare secondo te solo alla dichiarazione delle variabili, o anche per il focus e l'asseganzione?
Cioè, va bene così:
function validaReg(){
var ID = document.getElementById(id);
var PW = document.getElementById(pw);
var CPW = document.getElementById(cpw);
var MAIL = document.getElementById(mail);
var CMAIL = document.getElementById(c_mail);

var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;


if ((ID == "") || (ID == "undefined") || (PW == "") || (PW == "undefined") || (CPW == "") || (CPW == "undefined") || (MAIL == "") || (MAIL == "undefined") || (CMAIL == "") || (CMAIL == "undefined")) {
alert("Attenzione, devi riempire tutti i campi!");
document.registrazione.id.focus();
return false;
}
else if (PW != CPW) {
alert("La password confermata è diversa da quella scelta, controllare.");
document.registrazione.cpw.value = "";
document.registrazione.cpw.focus();
return false;
}

else if (!email_reg_exp.test(MAIL)) {
alert("Inserire un indirizzo email corretto.");
document.registrazione.mail.select();
return false;
}

else if (MAIL != CMAIL) {
alert("L'indirizzo e-mail ripetuto è diverso da quello inserito, controllare.");
document.registrazione.c_mail.value = "";
document.registrazione.c_mail.focus();
return false;
}

else{
document.registrazione.action = "registra.php";
document.registrazione.submit();
}
}

Grazie!!!
 

ari

Utente Attivo
6 Set 2007
34
0
0
ragazzi...ho risolto, anche se non capisco precisamente come...forse cambiando un po' di impostazioni al browser...davvero non so. Grazie cmq!!! A presto, che sicuramente sorgeranno altri problemi.