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

    problema validazione campi

    salve! questo script valuta se siano stati riempiti o meno i vari campi di un form...l'unico problema e che durante il controllo del form, nel caso ci fossero campi non riempiti, mi fa comparire l'alert d'avviso...ma al clik su OK mi rimanda alla pagina impostata nel parametro action (action="r_albergatore.php") al posto di farmi completare il campo....
    come posso ovviare al problema?

    SCRIPT JAVASCRIPT
    codice:
    <SCRIPT Language="Javascript">
    <!--
    function controlla()
    {
    var controllo=false;
    var oketa=true;
    var come=false;
    var okpref=true;
     
    //validazione campo input text
    if (document.theform.nome.value == "" )
    {
    controllo=true;
    alert("Il campo NOME del form è vuoto");
    }
     if (document.theform.cognome.value == "" )
    {
    controllo=true;
    alert("Il campo COGNOME del form è vuoto");
    }
    if (document.theform.email.value == "" )
    {
    controllo=true;
    alert("Il campo EMAIL del form è vuoto");
    }
    if (document.theform.hotel.value == "" )
    {
    controllo=true;
    alert("Il campo HOTEL del form è vuoto");
    }
    if (document.theform.localita.value == "" )
    {
    controllo=true;
    alert("Il campo LOCALITA' del form è vuoto");
    }
    
    //validazione select
    if (document.theform.sesso.selectedIndex == 0)
    {
    controllo=true;
    alert("Non hai specificato il sesso");
    }
     
    for (i=0;i<3;i++) //numero di radio button nel form
    {
    if(oketa){
    if(document.theform.eta[i].checked)oketa=false;
    else oketa=true;
    }
    else break;
    }
    if(oketa){
    controllo=true;
    alert("Non hai specificato eta.");
    }
     
    for (i=1;i<4;i++) //numero di checkbox nel form
    {
    if(okpref){
    if(document.theform["pref"+i].checked)okpref=false;
    else okpref=true;
    }
    else break;
    }
    if(okpref){
    controllo=true;
    alert("Non hai accettato le condizioni!");
    }
    if (controllo){return false}else{return true}
    }
    
    </SCRIPT>
    FORM
    codice:
    <form name="theform" method="post" action="r_albergatore.php" OnSubmit="return controlla(this)">
          <table width="411" border="0" align="left" class="sample2">
            <tr>
              <td width="32" class="testo"></td>
              <td width="89" class="testo">Nome:</td>
              <td width="492" class="testo"><label>
                <input name="nome" type="text" class="testo" id="nome" size="35">
              </label></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo">Cognome:</td>
              <td class="testo"><label>
                <input name="cognome" type="text" class="testo" id="cognome" size="35">
              </label></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo">Email:</td>
              <td class="testo"><label>
                <input name="email" type="text" class="testo" id="email" size="35">
              </label></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo">Hotel:</td>
              <td class="testo"><input name="hotel" type="text" class="testo" id="hotel" size="35"></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo">Localit&agrave;:</td>
              <td class="testo"><input name="localita" type="text" class="testo" id="localita" size="35"></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo"></td>
              <td class="testo"><textarea name="note" cols="45" rows="5" class="testo" id="note">Letta la nota informativa, esprimo il mio consenso al trattamento e alla comunicazione dei miei dati personali a Societ&agrave; che svolgono funzioni necessarie o strumentali all'operativit&agrave; del Servizio, e a Societ&agrave; incaricate della tutela del credito derivante dal presente contratto che potranno, per le medesime finalit&agrave;, anche trasmetterli a societ&agrave; terze. In mancanza del mio consenso il servizio non potr&agrave; essere erogato</textarea></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo"></td>
              <td class="testo"><input name="consenso" type="checkbox" onClick="this.form.button.disabled=!this.checked;" value="okconsenso" checked="checked" />
                  <span class="Pulsante"> Acconsento al trattamento dei miei dati </span></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo"></td>
              <td class="testo"><span class="Pulsante">
                <input name="button" type="submit" class="testo" id="button" value="Registrati">
              </span></td>
            </tr>
            <tr>
              <td class="testo"></td>
              <td class="testo"></td>
              <td class="testo"></td>
            </tr>
          </table>
          </form>

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Probabilmente perche' se per caso l'ultimo controllo che fai va bene, la variabile controllo divnta false e continua lo script anche se una o più prima erano a true.

    O metti un return false ad ogni errore e quindi fai i controlli in progressione, oppure dovresti gestire diversamente quella variabile.

    Es.: se Nome non va bene controllo=false (alert errore...)
    poi passa al Cognome (cognome ok e la viariabile controllo torna true eliminando quella a false di prima).

    Potresti fare un ciclo su i vari campi obbligatori e fare un unico alert con i nomi dei campi mancanti. O senza alert facendo apparire l'errore sotto i vari input ( o unico messaggio di errore). In questo modo al primo controllo=true(se nn error in caso di errore) blocchi il submit con return false;

    PS non vorrei dire ma il submit forse viene eseguito perche' hai usato un input di type submit e quindi esegue comunque. Prova con un type button e metti il submit in javascript( dopo i controlli)

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.