• User

    [Risolto] Funzione Javascript per validazione form

    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!!!


  • User

    @ari said:

    Inoltre, nell'istruzione:
    <input type="button" value="Registra" onClick="validaReg();"/>
    Ci va o no il ";" ? Ho provato sia con che senza ma niente. HELP!!!
    risposta veloce su questo, poi mi leggo il codice e vedo che altro ha:
    l'istruzione formalmente corretta e': onclick="javascript: validaReg()"
    il punto e virgola non serve, il prefisso "javascript:" non e' mandatorio ma e' buona cosa metterlo.

    guarda meglio nella status bar, non c'e' anche una segnalazione di errore javascript magari?
    L'hai provato anche su un browser degno di tale nome? che succede?
    in firefox (per esempio) trovi la ErrorConsolle e Venkman (entrambi sotto "tools", il secondo e' un plugin da installare) che ti aiutano nel debugging di javascript. In safari 3 trovi la javascript consolle e drosera, per il debugging di javascript. Opera non so, non lo uso, am sicuramente avra' qualcosa disopnibile.
    Per IE devi ravanare nell'msdn e da qualche parte dovresti trovare indicazioni per installare un mini-javascript-debugger, piuttosto spartano ma maglio che nulla (altrimenti ti devi installare il pachidermico visualstudio, ma e' meglio di no :P)


  • User

    Beh...diciamo che non ho le forze di cambiare browser adesso. tanto non dovrò fare un uso esagerato di javascript. Se puoi aiutami a trovare l'errore. I dettagli del mess di errore mi dicono:
    riga 80
    carattere 1
    errore: previsto oggetto
    cidice 0.

    la riga 80 è questa:
    <input type="button" value="Registra" onClick="javascript:validaReg()"/> <br/>
    ???????:?
    Ho dimenticato comunque di ringraziarti. Grazie!!!


  • User

    per prima cosa: che stai usando? html o xhtml? non si capisce bene dal tuo codice: manca l'intestazione (e si sa, un'intestazione non si nega a nessuno ;D) ed a volte autotermini gli input a volte no O.o this is confusing 😛
    Comuqnue, se stai usando xhtml le proprieta' onclick si scrivono con la C minuscola.
    In questo momento non ho a portata di mano un winzoz su cui provarlo (gli ho sparato prima di pranzo eprche' non lo soportavo piu' :P), per cui al massimo posso aiutarti debuggandolo "da remoto" ma per farlo devi trovare il javascript debugger di IE nascosto nei meandri dell'msdn 😞
    Quell'errore dice un po' molto poco 😛

    Per semplificarti al vita nel debugging togli il javascript dalla pagina e mettili in un file esterno che includerai a posteriori, cosi' almeno la segnalazione della riga la fa solo sul file js o solo sull'xhtml, cosa che aiuta a determinare meglio che succede.

    Ho dimenticato comunque di ringraziarti. Grazie!!!
    beh,thx ma non serve 🙂

    ciaps&&ciapetz
    lucio

    PS: anche se ti serve a poco non arrenderti con questo javascript, si inizia sempre cosi' ad imparare cose nuove, e non si sa mai cosa potra' tornare utile in futuro 😉


  • User

    Scusami...sto usando xhtml. Allora devo proprio procurarmi il debugger. Ora cerco un po'. Cmq ho fatto come hai detto: ho messo la funzione in un file esterno. Nella head della pagina con la form ho scritto:
    <script type="text/javascript" src="registrazione/validaReg.js">
    <!--
    //-->
    </script>
    E nel file validaReg.js (che è nella cartella registrazione) ho messo la funzione, così com'era. Non devo aggiungere altro vero?
    Il button rimane così com'è:
    <input type="button" value="Registra" onclick="javascript:validaReg()"/>

    e non trovando la funzione all'interno del file la cerca nel file esterno indicato. Questo almeno è così o non c'ho capito niente?


  • User

    si, esatto.
    In questo modo IE dovrebbe segnale kl'errore nel file corretto, almeno spero 😛


  • User

    Succede questo. La pagina si apre senza segnalare errori, ma se premo il button che avvia la funzione js mi da l'errore:

    Riga: 39
    Carattere: 1
    Errore: previsto oggetto
    codice; 0
    URL: http://.../registrazione.html

    che è il file della form, e non quello .js della funzione. E la riga 39 è sempre:
    <input type="button" value="Registra" onclick="javascript:validaReg()"/> <br/>


  • User

    che browser inutile... non sa manco segnalare un errore in modo decente...
    Ho idea che lui ti segnali quelal riga perche' la chiamata alla funzione e' li', ma l'errore e' dentro al codice JS :((((

    mumble


  • User

    Domanda da pura ignorante. Ma Firefox è free???


  • User

    Comunque...per tagliare la testa al toro ho banalizzato la funzione, e ho provato con:

    function validaReg(){
    alert ("ciao!");
    }

    Ma l'errore è lo stesso. Che significa??:x


  • User

    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.


  • User

    @ari said:

    Domanda da pura ignorante. Ma Firefox è free???
    E' molto meglio che free, e' opensource! 🙂


  • User

    Allora ce lo farò un pensierino!!! Grazie mille!