Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    3

    problema evidenziare campi nel form

    Ciao a tutti!! Ho un problema con gli oggetti o meglio... con come l'ottenerli all'interno di una funzione...
    Ho un form su cui faccio già un controllo dei campi obbligatori, dell'inserimento corretto della email, del Codice fiscale, ecc... vi posto la struttura del form:
    <form name="rform" method="post" enctype="multipart/form-data" action="registrazione_execute.php" onSubmit="javascript:return control('rform','nome','cognome','email','cemail', 'pw','cpw','cf','tel');">
    Nome <input type="text" name="nome" id="nome" style="width:100%">
    Cognome <input type="text" name="cognome" id="cognome" style="width:100%">
    E-mail <input type="text" name="email" id="email" style="width:100%">
    Conferma e-mail <input type="text" name="cemail" id="cemail" style="width:100%">
    Password <input type="password" name="pw" id="pw" style="width:100%" onBlur="controllo_pw(this)">
    Conferma password <input type="password" name="cpw" id="cpw" style="width:100%">
    Codice fiscale <input type="text" name="cf" id="cf" style="width:100%" onBlur="ControllaCF(this)">
    Telefono <input type="text" name="tel" id="tel" style="width:100%" >
    <input type="submit" name="task" value="conferma"/>
    </form>

    La funzione che utilizzo è:
    <script language="Javascript">
    function control(form_id,nome,cognome,email,cemail,pw,cpw,c f,tel) {
    var nome = document.forms[form_id].elements[nome].value;
    var cognome = document.forms[form_id].elements[cognome].value;
    var email = document.forms[form_id].elements[email].value;
    var cemail = document.forms[form_id].elements[cemail].value;
    var pw = document.forms[form_id].elements[pw].value;
    var cpw = document.forms[form_id].elements[cpw].value;
    var cf = document.forms[form_id].elements[cf].value;
    var tel = document.forms[form_id].elements[cap].value;
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

    if((nome == '')||(nome == "undefined"))
    {
    alert('Il campo Nome deve essere compilato!');
    return false;
    }
    else if((cognome == '')||(cognome == "undefined"))
    {
    alert('Il campo Cognome deve essere compilato!');
    return false;
    }
    else if((email == '')||(email == "undefined"))
    {
    alert('Il campo E-mail deve essere compilato!');
    return false;
    }
    else if (reg.test(email) == false) {
    alert('Il campo E-mail non è scritto correttamente');
    return false;
    }
    else if((cemail == '')||(cemail == "undefined"))
    {
    alert('Il campo Conferma e-mail deve essere compilato!');
    return false;
    }
    else if(email != cemail)
    {
    alert('L\' E-mail confermata è diversa da quella inserita!');
    return false;
    }
    else if((pw == '')||(pw == "undefined"))
    {
    alert('Il campo Password deve essere compilato!');
    return false;
    }
    else if((cpw == '')||(cpw == "undefined"))
    {
    alert('Il campo Conferma password deve essere compilato!');
    return false;
    }
    else if(cpw != pw)
    {
    alert('La Password confermata è diversa da quella inserita!');
    return false;
    }
    else if((cf == '')||(cf == "undefined"))
    {
    alert('Il campo Codice Fiscale deve essere compilato!');
    return false;
    }
    else if((tel== '')||(tel== "undefined"))
    {
    alert('Il campo Telefono deve essere compilato!');
    return false;
    }
    return "";
    }
    </SCRIPT>

    Il mio probelma è che non riesco a far in modo che la funzione control() mi evidenzi i campi vuoti che andrebbero compilati.
    Ho creato la classe "req2" che è da attribuire al campo (obbligatorio) non compilato:
    .req2 {
    background-color: #FFFFC3;
    }
    Il problema è che riesco ad utilizzarla solo con questa scrittura:
    obj.className="req2";
    Ma dal form ricavo solo i valori contenuti negli input e non l'oggetto in se... come posso fare???
    var nome = document.forms[form_id].elements[nome].value;
    mi ricava il valore all'interno dell'input, che giustamente mi serve, ma come faccio ad ottenerne poi l'obj per evidenziarlo??

    Qualcuno mi può aiutare?
    *kanka*

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    var obj = document.forms[form_id].elements[nome] dovrebbe essere l'oggetto
    obj.className = ....

    hai provato?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    3
    Si, ho provato:
    1)
    if((nome == '')||(nome == "undefined"))
    { var nome2 = document.forms[form_id].elements[nome];
    alert('Il campo Nome deve essere compilato!');
    return false;
    nome2.className="req2";
    }

    così il controllo funziona ma non evidenzia nessun input
    2)
    if((nome == '')||(nome == "undefined"))
    { var nome2 = document.forms[form_id].elements[nome];
    alert('Il campo Nome deve essere compilato!');
    nome2.className="req2";
    return false;
    }

    così invece mi manda nella pag successiva, quindi il controllo non funziona...

    Eppure la classe reg2 l'ho provata con la funzione di controllo CF e funzionava perfettamente...
    però alla funzione gli passo direttamente l'obj:

    <input type="text" name="cf" id="cf" style="width:100%" onBlur="ControllaCF(this)">

    function ControllaCF(obj)
    {
    var validi, i, s, set1, set2, setpari, setdisp;
    cf = obj.value;
    if( cf == '' ) return false;
    cf = cf.toUpperCase();
    if( cf.length != 16 ) {
    alert('La lunghezza del codice fiscale non è corretta');
    obj.value="";
    obj.focus();
    obj.className="req2";
    return false; }
    validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for( i = 0; i < 16; i++ ){
    if( validi.indexOf( cf.charAt(i) ) == -1 ) {
    alert('Il codice fiscale contiene un carattere non valido: ')+ cf.charAt(i);
    obj.value="";
    obj.focus();
    obj.className="req2";
    return false; }
    }
    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) ) {
    alert('Il codice fiscale non è corretto');
    obj.value="";
    obj.focus();
    obj.className="req2";
    return false; }
    }
    *kanka*

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    alert di document.getElementbyId('nome') torna l'oggetto? hai modo di vedere se la classe viene applicata? con firefox e firebug vedi direttamente le modifiche html/css volendo analizzando l html

  5. #5
    Allora .. (l'esempio &egrave; per 'nome', ma vale per tutti i campi):
    Tu scrivi:
    codice:
    function control(form_id,nome,cognome,email,cemail,pw,cpw,cf,tel) {
    var nome = document.forms[form_id].elements[nome].value;
    .....
    Prima domanda:
    ORA, cosa contiene la variabile nome ??

    Se hai capito cosa contiene, hai anche capito che se fai, dopo, :

    codice:
    if((nome == '')||(nome == "undefined"))
    { var nome2 = document.forms[form_id].elements[nome];
    ...
    sei perfettamente conscio che la variabile nome2 non vale nulla, a meno che,
    per una fortuna sfacciata, il value del campo nome valesse esattamente 'nome' ...

    Quindi:
    codice:
    function control(form_id,nome,cognome,email,cemail,pw,cpw,cf,tel) {
    var ValoreNome = document.forms[form_id].elements[nome].value;
    .....
    if((ValoreNome == '')||(ValoreNome == "undefined"))
    { var nome2 = document.forms[form_id].elements[nome];
    ...
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    3
    Hai pienamente ragione!!!!
    Non conoscendo molto javascript mi son persa in un bicchiere d'acqua!!!!!
    Ora funziona perfettamente, grazie!!!!!
    *kanka*

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 © 2024 vBulletin Solutions, Inc. All rights reserved.