Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Validazione Modulo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    17

    Validazione Modulo

    Salve amici, stò impazzendo... sono ore che sto cercando di validare un modulo ma non ci sto capendo più
    Allora, vi spiego... vorrei validare il modulo con il nome e il cognome obbligatori, e il pulsante "invia" che è visibile solo se quando è spuntato "accetto le condizioni"... vi posto quì sotto i tag... tutto è funzionante ma il problema sorge dopo aver chiuso la finestrella d'avvertimento che appare "compila i seguenti dati" i dati che erano compilati si ripristinano.
    Io vorrei che non si ripristinano tutti i dati dopo la chiusura di questa la finestrella di avvertimento. Qualcuno gentilmente mi può aiutare a risolvere questo problema?



    <html>

    <head>

    <script language="JavaScript">
    <!--
    var checkobj

    function accetta(el){
    checkobj=el
    if (document.all||document.getElementById){
    for (i=0;i<checkobj.form.length;i++){
    var tempobj=checkobj.form.elements[i]
    if(tempobj.type.toLowerCase()=="submit")
    tempobj.disabled=!checkobj.checked
    }
    }
    }

    function disabilita(el){
    if (!document.all&&!document.getElementById){
    if (window.checkobj&&checkobj.checked)
    return true
    else{
    alert("Per favore accetta i termini del contratto")
    return false
    }
    }
    }
    -->
    </script>

    <script language="JavaScript">


    function formCheck(formobj){
    // Enter name of mandatory fields
    var fieldRequired = Array("nome", "cognome");
    // Enter field description to appear in the dialog box
    var fieldDescription = Array("nome", "cognome");
    // dialog message
    var alertMsg = "Compila i seguenti campi:\n";

    var l_Msg = alertMsg.length;

    for (var i = 0; i < fieldRequired.length; i++){
    var obj = formobj.elements[fieldRequired[i]];
    if (obj){
    switch(obj.type){
    case "select-one":
    if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
    alertMsg += " - " + fieldDescription[i] + "\n";
    }
    break;
    case "select-multiple":
    if (obj.selectedIndex == -1){
    alertMsg += " - " + fieldDescription[i] + "\n";
    }
    break;
    case "text":
    case "textarea":
    if (obj.value == "" || obj.value == null){
    alertMsg += " - " + fieldDescription[i] + "\n";
    }
    break;
    default:
    }
    if (obj.type == undefined){
    var blnchecked = false;
    for (var j = 0; j < obj.length; j++){
    if (obj[j].checked){
    blnchecked = true;
    }
    }
    if (!blnchecked){
    alertMsg += " - " + fieldDescription[i] + "\n";
    }
    }
    }
    }

    if (alertMsg.length == l_Msg){
    return true;
    }else{
    alert(alertMsg);
    return false;
    }
    }
    // -->
    </script>


    </head>

    <body>

    <form name="modulo" name="formcheck" onsubmit="return formCheck(this);" onSubmit="disabilita(this); return false">
    Nome *: <input type=text name="nome" size="25">

    Cognome *: <input type=text name="cognome" size="25">





    <font size=3 face="verdana">
    Contratto:
    </font>

    <textarea rows="5" cols="30" wrap=virtual>
    I termini di questo contratto prevedono che l'utente abbia studiato almeno un po' di javascript per etc etc etc... </textarea></p>




    <input name="chekka" type="checkbox" onClick="accetta(this)">Accetta i termini del contratto

    <input type="Submit" value="Invia!" disabled onClick ="document.modulo.submit()">
    </p>
    </form>
    </div>
    <script>

    </body>

    </html>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    17
    Nessuno risponde?
    Penso l'errore si trattasse di due tag uguali (name e onsubmit) dentro un form solo:

    <form name="modulo" name="formcheck" onsubmit="return formCheck(this);" onSubmit="disabilita(this); return false">

    Dove è sbagliato???

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Aggiungi al tuo codice (alla fine dei controlli dei campi) la parte in rosso e togli tutto il primo script (quello che abilita disabilita i checkbox per intenderci le funzioni accetta e disabilita)
    codice:
    if (!blnchecked){
    alertMsg += " - " + fieldDescription[i] + "\n";
    }
    }
    }
    }
    if (alertMsg.length == l_Msg){
    return true;
    }else{
    alert(alertMsg);
    return false;
    }
    if(!document.modulo.chekka.checked){
    alert("accetta le condizioni di contratto")
    return false;
    } 
    }
    il form lo modifichi cosi:
    codice:
    <form name="modulo" onsubmit="return formCheck(this);">
    il checkebox (le condizioni) e il pulsante invio li modifichi cosi:
    codice:
    <input name="chekka" type="checkbox" onclick="if(this.checked){document.modulo.conferma.disabled=false}else{document.modulo.conferma.disabled=true}">Accetta i termini del contratto
    <input type="Submit" value="Invia!" disabled name="conferma">
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    17
    Grazie Andrea, ci sono riuscito!

    Un'altro favore, ho aggiunto altri 3 campi nello stesso modulo (la data di nascita, il numero di telefono, e l'e-mail)... in questi 3 cambi vorrei validare la data di nascita se non sono state inserite lettere o trattini tipo questi "/"... l'e-mail da validarla se non è inserita la chiocciola e il punto it... e il numero di telefono con i soli numeri e non di lettere.

    Come si fà?

    Posto sotto i tag aggiuntivi di colore rosso:

    <form name="modulo" onsubmit="return formCheck(this);">
    Nome *: <input type=text name="nome" size="25">

    Cognome *: <input type=text name="cognome" size="25">




    Telefono Casa/Ufficio*:<input type="text" name="telefonocasaufficio" size="20" maxlength="15">
    </p>


    Data di Nascita*:<input type="text" name="datanascita" size="11" maxlength="11">
    </p>


    E-mail*:<input type="text" name="email" size="40">

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Sempre in fondo allo script dopo il controllo della casella aggiungi questo:
    codice:
    	
            var ckmail  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    	var numeri = /^\d+$/;
    	var data = /^(\d{2})+\/(\d{2})+\/(\d{4})+$/;
    	var mail = document.modulo.email.value
    	var nato = document.modulo.datanascita.value
    	var recapito = document.modulo.telefonocasaufficio.value
    	if(!numeri.test(recapito)){
    	alert("Inserire solo numeri di telefono")
    	return false;}
    	if(!data.test(nato)){
    	alert("Inserire la data nel formato gg/mm/aaaa")
    	return false;}
    	if(!ckmail.test(mail)){
    	alert("Email formalmente errata controllare");
    	return false;}
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    17
    Ciao Andrea, prima di tutto ringrazio, non vorrei darvi troppo disturbo.
    Ho provato ad aggiungere i tag in fondo allo script come mi hai spiegato, ma non funzionano ... dopo l'invio si apre la solita finestra di prima come se non ci fosse stata nessuna nuova funzione aggiunta nello script.

    Ho riprovato anche a spostare i tag, a inserirli dall'inizio dello script, dopo l'invio si apre la finestra che, prima di tutto avvisa "inserire solo numeri di telefono", se nei campi nome e cognome non sono ancora stati inseriti.

    Io vorrei che dopo l'invio, prima di tutto si dovrebbe aprire la finestra che avvisa di inserire tutti i campi mancanti e mentre nei 3 campi (data nascita, numero telefono, e-mail) dovrebbero essere validati come ho spiegato in precedenza.

    Come si fà?

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script language="JavaScript">
    function formCheck(){
    var Avviso;
    var nome = document.modulo.nome.value
    var cognome = document.modulo.cognome.value
    var ckmail  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    	var mail = document.modulo.email.value
    	var nato = document.modulo.datanascita.value
    	var recapito = document.modulo.telefonocasaufficio.value
    	var numeri = /^\d+$/;
    	var data = /^(\d{2})+\/(\d{2})+\/(\d{4})+$/;
    	if(nome==""){
    	var NOME = "Inserisci un nome\n";
    	}else{NOME = "";}
    	if(cognome==""){
    	var COGNOME = "Inserisci un cognome\n";
    	}else{COGNOME = "";}
    	if(!numeri.test(recapito)){
    	var RECAPITO = "Inserire solo numeri di telefono\n";
    	}else{RECAPITO = "";}
    	if(!data.test(nato)){
    	var NATO = "Inserire la data nel formato gg/mm/aaaa\n";
    	}else{NATO = "";}
    	if(!ckmail.test(mail)){
    	var MAIL = "Email formalmente errata controllare\n";
    	}else{MAIL = "";}
    Avviso = NOME+COGNOME+RECAPITO+NATO+MAIL
    if(Avviso!=""){alert(Avviso);
    return false;}else{return true;}
    }
    </script>
    
    
    </head>
    
    <body>
    
    <form name="modulo" onsubmit="return formCheck();">
    Nome *: <input type=text name="nome" size="25">
    
    Cognome *: 
    <input type=text name="cognome" size="25">
    
    
    Telefono Casa/Ufficio*:
    <input type="text" name="telefonocasaufficio" size="20" maxlength="15">
    
    
    Data di Nascita*:<input type="text" name="datanascita" size="11" maxlength="11">
    </p>
    
    
    E-mail*:<input type="text" name="email" size="40">
    </p>
    
    
    <font size=3 face="verdana">Contratto:
      </font>
    
      <textarea rows="5" cols="30" wrap=virtual>
    I termini di questo contratto prevedono che l'utente abbia studiato almeno un po' di javascript per etc etc etc... </textarea>
    </p>
    
    
    
    
    <input name="chekka" type="checkbox" onclick="if(this.checked){document.modulo.conferma.disabled=false}else{document.modulo.conferma.disabled=true}">Accetta i termini del contratto
    
    <input type="Submit" value="Invia!" disabled name="conferma">
    
    </p>
    </form>
    </div>
    <script>
    
    </body>
    
    </html>
    Cosi funziona tutto, se vuoi apporre modifiche o aggiornalo qui trovi tutto quello che ti occorre.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    17
    Grazie Andrea, ho risolto tutto.

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.