Visualizzazione dei risultati da 1 a 10 su 10

Discussione: invio form

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    invio form

    ciao a tutti,

    come posso controllare l'invio di un form,

    io vorrei che se non è spuntato almeno un check l'invio non deve essere eseguito

    sto facendo cosi ma si blocca sempre :master:
    codice:
    function verifica(){
     var e=document.form1.elements;
      	for(var i=0;i<e.length;i++)
     	if(e[i].name.indexOf('selezione')>-1 && e[i].type=='checkbox' && e[i].checked){
    	e.submit();
    	}else{
    	alert("ATTENZIONE PER PROSEGUIRE E' NECESSARIO INDICARE ALMENO UNA SETTIMANA DI PERMANENZA");
    	return false;
    	}
    
    }

    codice:
    <form action="prima_fase.php" method="get" name="form1" onSubmit="return verifica()">

    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    mhmm.... forse sbaglio, ma se "e" è l'insieme dei campi del form non dovresti poter fare e.submit()... Prova a sostituire e.submit() con return true;....

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ho provato un pò in tutti i modi che conosco ma niente non invia....

    codice:
    function verifica(){
     var e=document.form1.elements;
      	for(var i=0;i<e.length;i++)
     	if(e[i].name.indexOf('selezione')>-1 && e[i].type=='checkbox' && e[i].checked){
    	document.form1.submit();
    	return true;
    	}else{
    	alert("ATTENZIONE PER PROSEGUIRE E' NECESSARIO INDICARE ALMENO UNA SETTIMANA DI PERMANENZA");
    	return false;
    	}
    
    }

  4. #4
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Aspetta... ma con "non invia" intendi che ti apre la alert? Perchè onestamente non ho capito troppo bene le condizioni che hai messo nell'if, ma sembrerebbe che controlli che OGNI campo verifichi quelle tre condizioni altrimenti non invii il form, quindi sarebbe corretto che finisca nell'alert... è quello che vuoi? Altrimenti, potresti spiegare meglio le condizioni che hai inserito?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    se una checkbox è checked=true invio il form altrimenti mando un messaggio di alert


  6. #6
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Rileggendo meglio la prima cosa che hai scritto....
    io vorrei che se non è spuntato almeno un check l'invio non deve essere eseguito
    Almeno : quindi forse ora ti sta mostrando ripetutamente l'alert perchè la prima della serie di check non checkata...? Se è così prova:
    codice:
    for(var i=0;i<e.length;i++)
      if(-condizione per cui può inviare-)
        return true;
      //else niente
    
    //se arrivo qui è perchè non si è mai verificata la condizione
    alert(....);
    return false;
    Che ne dici?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    scusa ma io di diverso cosa faccio??

    controllo le check se checked == true invio il form

    codice:
    function verifica(){
     var e=document.form1.elements;
      	for(var i=0;i<e.length;i++)
     	if(e[i].name.indexOf('selezione')>-1 && e[i].type=='checkbox' && e[i].checked){
    	this.submit();
    	}else{
    	alert("ATTENZIONE PER PROSEGUIRE E' NECESSARIO INDICARE ALMENO UNA SETTIMANA DI PERMANENZA");
    	return false;
    	}
    }

  8. #8
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    Se ho capito bene, il tuo if sta dentro il for ed essendoci anche l'else viene eseguito un comando una sola volta al primo passaggio. Cioè, al primo giro (con i=0) vengono controllate le condizioni su element[0]: se le condizioni sono verificate viene eseguito il corpo dell'if (quindi si esce dalla funzione), se no viene eseguito il corpo dell'else (che esce dalla funzione pure lui) ...in pratica in ogni caso non scorri tutti gli elements ma esci sempre al primo!
    Invece, nella soluzione che ti ho proposto, non essendoci l'else, se le condizioni non sono verificate si coninua a ciclare; se si arriva alla fine del ciclo è perchè non si sono mai verificate le condizioni di invio e si può quindi segnalare l'errore e restituire false.
    Se preferisci, un'altra versione analoga potrebbe essere:
    var trovato=false;
    for(var i=0;i<e.length&&trovato==false;i++)
    if(-condizioni-){
    trovato=true;
    }else{ trovato=false;
    }
    if(trovato==false){
    alert("ATTENZIONE PER PROSEGUIRE E' NECESSARIO INDICARE ALMENO UNA SETTIMANA DI PERMANENZA");
    return false;}
    else return true;

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929
    ho risolto cosi

    codice:
    function verifica(){
     var e=document.form1.elements;
      	for(var i=0;i<e.length;i++)
     	if(e[i].name.indexOf('selezione')>-1 && e[i].type=='checkbox' && e[i].checked){
    	document.form1.submit();
    	return true;
    	} 
    	alert("ATTENZIONE PER PROSEGUIRE E' NECESSARIO INDICARE ALMENO UNA SETTIMANA DI PERMANENZA");
    	return false;
    }

  10. #10
    Utente di HTML.it L'avatar di dannie
    Registrato dal
    Aug 2005
    Messaggi
    336
    ..che è appunto quella che ti suggerivo (il submit non serve, basta il return true)! Spero di essere stata chiara nel spiegarti perchè funziona!

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.