Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305

    Return funzione() e invio form - errore

    Il titolo non è molto esaustivo, mi spiego:

    questo js mi controlla i campi di un form:

    codice:
    <script language="JavaScript" type="text/javascript">
    <!--
    function controlla_dati(){
      
    	var val_nome=document.personale.nome.value;
    	var val_cognome=document.personale.cognome.value;
    	var val_nato=document.personale.nato.value;
    	var val_gg=document.personale.gg.value;
    	var val_mm=document.personale.mm.value;
    	var val_aa=document.personale.aa.value;
    	var val_ind=document.personale.ind.value;
    	var val_cap=document.personale.cap.value;
    	var val_prov=document.personale.prov.value;
    	var val_city=document.personale.city.value;
    	var val_email=document.personale.email.value;
    	var val_telcasa=document.personale.telcasa.value;
    	var val_teluff=document.personale.teluff.value;
    	var val_cell=document.personale.cell.value;
    	
    	if (val_cognome == "") 
    	{
    	alert('Attenzione inserire il cognome.');
    	document.personale.cognome.focus();
    	return false;
    	}
    	
    	 if (val_nome == "") 
    	{
    	alert('Attenzione inserire il nome.');
    	document.personale.nome.focus();
    	return false;
    	}
    	
    	if (val_nato == "") 
    	{
    	alert('Attenzione inserire il luogo di nascita.');
    	document.personale.nato.focus();
    	return false;
    	}
    	
    	if ((val_gg.length < 2) || (val_gg > 31))
    	{
    	alert('Attenzione giorno di nascita non valido.');
    	document.personale.gg.focus();
    	return false;
    	}
    	
    	if ((val_mm.length < 2) || (val_mm > 12))
    	{
    	alert('Attenzione mese di nascita non valido.');
    	document.personale.mm.focus();
    	return false;
    	}
    	
    	if ((val_aa.length < 4) || (val_aa > <?php echo"$year"; ?>))
    	{
    	alert('Attenzione anno di nascita non valido.');
    	document.personale.aa.focus();
    	return false;
    	}
    
    	if (val_ind == "") 
    	{
    	alert('Attenzione inserire indirizzo.');
    	document.personale.ind.focus();
    	return false;
    	}
    	
    	if (val_cap == "") 
    	{
    	alert('Attenzione inserire il C.A.P.');
    	document.personale.cap.focus();
    	return false;
    	}
    	
    	if (val_prov == "") 
    	{
    	alert('Attenzione specificare la provincia.');
    	document.personale.prov.focus();
    	return false;
    	}
    	
    	if (val_city == "") 
    	{
    	alert('Attenzione specificare la città.');
    	document.personale.city.focus();
    	return false;
    	}
    	// -------- controllo che sia maggiorenne
    	var g_n = parseInt(document.personale.gg.value);
    	var m_n = parseInt(document.personale.mm.value);
    	var a_n = parseInt(document.personale.aa.value);
    	var nasc = new Date(a_n, m_n-1, g_n);
    
    	var nasc = new Date(val_aa, val_mm, val_gg);
    	var magg = new Date(<?php echo"$year, $month, $day"; ?>);
    	magg.setFullYear(magg.getFullYear()-18);
    	if (nasc > magg)
    	{
    	alert('Attenzione non è stato compiuto il 18 anno');
    	return false;
    	}
    	
    	// -------- controllo che ci sia almeno un numero di telefono
    	if((val_telcasa == "") && (val_teluff == "") && (val_cell == ""))
    	{
          alert("Inserire almeno un recapito telefonico");
          document.personale.telcasa.focus();
          return false;
          }
    	// ---------- controllo indirizzo email
    	if(val_email != "")
    	{
       Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
       if (Filtro.test(val_email))
          return true;
       else
          {
          alert("L'indirizzo e-mail inserito non è valido, controllare prego");
          document.personale.email.focus();
          return false;
          }
    	 }
    	// ----------------------------------------
    	
    	
    }
    //-->
    </script>
    Ora l'action del form è impostata a sè stesso poichè deve prelevare dati da db al onChange di una select:

    <form method="post" action="#" name="personale">

    per effettuare poi il controllo dei vari campi l'invio del modulo ho creato questo submit:

    <input class="smb" type="submit" value="AVANTI >" onMouseDown="return controlla_dati();" onMouseUp="this.form.action='step2.php';">

    Ora con explorer e opera funziona benissimo ma con firefox, in caso di errori contemplati nella funzione controlla_dati() mi fa apparire l'alert e subito dopo invia il modulo a step2.php.

    Dato che, come avrete capito, non sono ferratissimo potete suggerirmi qualche alternativa/soluzione al mio problema?

  2. #2
    Prova cosi:

    nello script java aggiungi

    codice:
    var verifica=false;
    
    function vai(){
        if (verifica==true){
            document.getElementById("form1").action="step2.php";
            document.getElementById("form1").submit();
        }
    }
    
    function mDown(){
        verifica=return controlla_dati();
    }
    poi cambia:
    codice:
    <form method="post" id="form1" name="form1" action="#" name="personale">
    ed infine cambia:
    codice:
     <input class="smb" type="submit" value="AVANTI >" onMouseDown="mDown();" onMouseUp="vai();">

  3. #3
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    Ti ringrazio TrigunXX ma cosi il form non esegue il controllo e spedisce a sè stesso.
    Una cosa:
    <form method="post" id="form1" name="form1" action="#" name="personale">

    qui probabilmente è sbagliato che ci siano 2 attributi name, ho tenuto il name "personale" e impostato l'id a "personale" ma non va

  4. #4
    Non va nemmeno se metti id="form1" e name="personale" ??

  5. #5
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    No, non va neanche cosi... cioè con firefox mi pare funzioni bene ma con i.e. invia ancora a sè stesso e non all'url passato nello script.

  6. #6
    prova allora a mettere una funzione così (aggiunta alle altre che ti avevo postato)

    codice:
    function clicca(){
    	verifica=controlla_dati();
    	vai();
    	return verifica;
    }
    e cambi:

    codice:
    <form method="post" id="form1" action="#" name="personale">
     
    <input class="smb" type="submit" value="AVANTI >" onclick="clicca();">

  7. #7
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    Cosi non va in entrambi i browser, cioè all'onClick non esegue controlli e invia sempre a sè stesso.

  8. #8
    Allora riprova con il metodo di prima ma però correggi un errore che non avevo notato:

    verifica=return controlla_dati();

    diventa

    verifica=controlla_dati();

    naturalmente l'id del form è "form1"

  9. #9
    Utente di HTML.it L'avatar di renzoz
    Registrato dal
    May 2001
    Messaggi
    305
    Cacchius, non pensavo fosse cosi dura... ti ringrazio per la costanza ma ancora non ci siamo, ti posto il codice cosi come da tue istruzioni.
    Notare che in questo modo sia con ie che firefox quando schiaccio esegue perfettamente il controllo però invia ancora sè stesso:
    codice:
    <script language="JavaScript" type="text/javascript">
    <!--
    function controlla_dati(){
      
    	var val_nome=document.personale.nome.value;
    	var val_cognome=document.personale.cognome.value;
    	var val_nato=document.personale.nato.value;
    	var val_gg=document.personale.gg.value;
    	var val_mm=document.personale.mm.value;
    	var val_aa=document.personale.aa.value;
    	var val_ind=document.personale.ind.value;
    	var val_cap=document.personale.cap.value;
    	var val_prov=document.personale.prov.value;
    	var val_city=document.personale.city.value;
    	var val_email=document.personale.email.value;
    	var val_telcasa=document.personale.telcasa.value;
    	var val_teluff=document.personale.teluff.value;
    	var val_cell=document.personale.cell.value;
    	
    	if (val_cognome == "") 
    	{
    	alert('Attenzione inserire il cognome.');
    	document.personale.cognome.focus();
    	return false;
    	}
    	
    	 if (val_nome == "") 
    	{
    	alert('Attenzione inserire il nome.');
    	document.personale.nome.focus();
    	return false;
    	}
    	
    	if (val_nato == "") 
    	{
    	alert('Attenzione inserire il luogo di nascita.');
    	document.personale.nato.focus();
    	return false;
    	}
    	
    	if ((val_gg.length < 2) || (val_gg > 31))
    	{
    	alert('Attenzione giorno di nascita non valido.');
    	document.personale.gg.focus();
    	return false;
    	}
    	
    	if ((val_mm.length < 2) || (val_mm > 12))
    	{
    	alert('Attenzione mese di nascita non valido.');
    	document.personale.mm.focus();
    	return false;
    	}
    	
    	if ((val_aa.length < 4) || (val_aa > <?php echo"$year"; ?> ))
    	{
    	alert('Attenzione anno di nascita non valido.');
    	document.personale.aa.focus();
    	return false;
    	}
    
    	if (val_ind == "") 
    	{
    	alert('Attenzione inserire indirizzo.');
    	document.personale.ind.focus();
    	return false;
    	}
    	
    	if (val_cap == "") 
    	{
    	alert('Attenzione inserire il C.A.P.');
    	document.personale.cap.focus();
    	return false;
    	}
    	
    	if (val_prov == "") 
    	{
    	alert('Attenzione specificare la provincia.');
    	document.personale.prov.focus();
    	return false;
    	}
    	
    	if (val_city == "") 
    	{
    	alert('Attenzione specificare la città.');
    	document.personale.city.focus();
    	return false;
    	}
    	// -------- controllo che sia maggiorenne
    	var g_n = parseInt(document.personale.gg.value);
    	var m_n = parseInt(document.personale.mm.value);
    	var a_n = parseInt(document.personale.aa.value);
    	var nasc = new Date(a_n, m_n-1, g_n);
    
    	var nasc = new Date(val_aa, val_mm, val_gg);
    	var magg = new Date(<?php echo"$year, $month, $day"; ?> );
    	magg.setFullYear(magg.getFullYear()-18);
    	if (nasc > magg)
    	{
    	alert('Attenzione non è stato compiuto il 18 anno');
    	return false;
    	}
    	
    	// -------- controllo che ci sia almeno un numero di telefono
    	if((val_telcasa == "") && (val_teluff == "") && (val_cell == ""))
    	{
          alert("Inserire almeno un recapito telefonico");
          document.personale.telcasa.focus();
          return false;
          }
    	// ---------- controllo indirizzo email
    	if(val_email != "")
    	{
       Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
       if (Filtro.test(val_email))
          return true;
       else
          {
          alert("L'indirizzo e-mail inserito non è valido, controllare prego");
          document.personale.email.focus();
          return false;
          }
    	 }
    	// ----------------------------------------
    	
    	
    }
    var verifica=false;
    
    function vai(){
        if (verifica==true){
            document.getElementById("form1").action="step2.php";
            document.getElementById("form1").submit();
        }
    }
    
    function mDown(){
        verifica=controlla_dati();
    }
    
    
    //-->
    </script>
    il form:
    codice:
    <form method="post" id="form1" action="step1.php" name="personale">
    il submit:
    codice:
    <input class="smb" type="submit" value="AVANTI >" onMouseDown="mDown();" onMouseUp="vai();">

  10. #10
    Prova a cambiare il pulsante

    da:
    type="submit"
    a:
    type="button"

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.