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

    [onSubmit] associare 2 funzioni

    Ciao,

    domanda banale... ma non sono riuscito...

    come si fa ad associare all'evento onSubmit 2 funzioni diverse?

    Io ho provato con

    onSubmit="return funzione1(); funzione2();"

    ma niente... mi funziona solo la prima...

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Dipende anche se le funzioni possono ritornare true o false !!!!

    Comunque.... Premetto che solo funzione1() ritorna true o false.

    codice:
    onSubmit="return funzione3()" 
    
    function funzione3() {
     if (! funzione1()) {
      return false;
     }
     funzione2();
     return true;
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Ho provato questo codice

    codice:
    <html>
    	<head>
    	
    
    
    	<script language="javascript" type="text/javascript">
    
    
    
    
    
    function controlla_data() {
    
    var Data1 = document.inviadati.Data1.value;
    var Data2 = document.inviadati.Data2.value;
    
    
    if (document.inviadati.Data1.value.substring(2,3) != "/" ||
       document.inviadati.Data1.value.substring(5,6) != "/" ||
       isNaN(document.inviadati.Data1.value.substring(0,2)) ||
       isNaN(document.inviadati.Data1.value.substring(3,5)) ||
       isNaN(document.inviadati.Data1.value.substring(6,10))) {
          alert("Inserire Data1 in formato gg/mm/aaaa");
          document.inviadati.Data1.value = "";
          document.inviadati.Data1.focus();
          return false;
    }
    
    else if (document.inviadati.Data1.value.substring(0,2) > 31) {
       alert("Impossibile utilizzare un valore superiore a 31 per i giorni");
       document.inviadati.Data1.select();
       return false;
    }
    
    else if (document.inviadati.Data1.value.substring(3,5) > 12) {
       alert("Impossibile utilizzare un valore superiore a 12 per i mesi");
       document.inviadati.Data1.value = "";
       document.inviadati.Data1.focus();
       return false;
    }
    
    else if (document.inviadati.Data1.value.substring(6,10) < 1850) {
       alert("Impossibile utilizzare un valore inferiore a 1900 per l'anno");
       document.inviadati.Data1.value = "";
       document.inviadati.Data1.focus();
       return false;
    }
    
    if (document.inviadati.Data2.value.substring(2,3) != "/" ||
       document.inviadati.Data2.value.substring(5,6) != "/" ||
       isNaN(document.inviadati.Data2.value.substring(0,2)) ||
       isNaN(document.inviadati.Data2.value.substring(3,5)) ||
       isNaN(document.inviadati.Data2.value.substring(6,10))) {
          alert("Inserire Data2 in formato gg/mm/aaaa");
          document.inviadati.Data2.value = "";
          document.inviadati.Data2.focus();
          return false;
    }
    
    else if (document.inviadati.Data2.value.substring(0,2) > 31) {
       alert("Impossibile utilizzare un valore superiore a 31 per i giorni");
       document.inviadati.Data2.select();
       return false;
    }
    
    else if (document.inviadati.Data2.value.substring(3,5) > 12) {
       alert("Impossibile utilizzare un valore superiore a 12 per i mesi");
       document.inviadati.Data2.value = "";
       document.inviadati.Data2.focus();
       return false;
    }
    
    else if (document.inviadati.Data2.value.substring(6,10) < 1850) {
       alert("Impossibile utilizzare un valore inferiore a 1900 per l'anno");
       document.inviadati.Data2.value = "";
       document.inviadati.Data2.focus();
       return false;
    }
    
    
    }
    
    
    
    	function controllo(){ 
    	with(document.inviadati) { 
    	if(Data1.value=="") { 
    	alert("Errore: compilare il campo DATA 1"); 
    	Cognome.focus(); 
    	return false; 
    	} 
    	if(Data2.value=="") { 
    	alert("Errore: compilare il campo DATA 2"); 
    	Nome.focus(); 
    	return false; 
    	} 
    	} 
    
    	return true; 
    	} 
    
    
    
    
    
    function funzione3() {
     if (! controlla_data()) {
      return false;
     }
     controllo();
     return true;
    }
    
    
    
    	</script>
    
    	
    	</head>
    
    	<body>
    
    
    
    		
    
    
    		<table align ="center">
    
    
    
    			<form name="inviadati" onSubmit="return funzione3();" method="post" action = "Pagina2.php">
    	
    
    			<tr>
    			<td>Data 1</td>
    			<td><input name="Data1" maxLength="30" size=8></td>
    			</tr>
    
    			<tr>
    			<td>Data 2</td>
    			<td><input name="Data2" maxLength="50"  size=8></td>
    			</tr>
    
    			<tr>
    			<td><input name="Invia" type="submit" value="Invia"></td>
    			</tr>
    
    			</form>
    
    		</table>
    
    
    
    	</body>
    
    </html>
    dunque... la funzione controlla_data() funziona per tutte e due i campi... mentre la funzione controllo() che verifica se i campi sono vuoti non va... e oltretutto non mi lascia accedere alla pagina successiva (pagina2)... :master:


  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ho scritto che premetevo che sola la funzione 1 ritornava true o false ( cioè era quella di controllo ).

    Nel tuo caso devi fare cosi visto che anche la seconda funziona ritorna qualcosa di utile.

    codice:
    function funzione3() {
     if (! controlla_data()) {
      return false;
     }
     return controllo();
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    mmm si ok... ma anche così non mi passa alla pagina successiva...


    codice:
    <html>
    	<head>
    	
    
    
    	<script language="javascript" type="text/javascript">
    
    
    
    
    
    function controlla_data() {
    
    var Data1 = document.inviadati.Data1.value;
    var Data2 = document.inviadati.Data2.value;
    
    
    if (document.inviadati.Data1.value.substring(2,3) != "/" ||
       document.inviadati.Data1.value.substring(5,6) != "/" ||
       isNaN(document.inviadati.Data1.value.substring(0,2)) ||
       isNaN(document.inviadati.Data1.value.substring(3,5)) ||
       isNaN(document.inviadati.Data1.value.substring(6,10))) {
          alert("Inserire Data1 in formato gg/mm/aaaa");
          document.inviadati.Data1.value = "";
          document.inviadati.Data1.focus();
          return false;
    }
    
    else if (document.inviadati.Data1.value.substring(0,2) > 31) {
       alert("Impossibile utilizzare un valore superiore a 31 per i giorni");
       document.inviadati.Data1.select();
       return false;
    }
    
    else if (document.inviadati.Data1.value.substring(3,5) > 12) {
       alert("Impossibile utilizzare un valore superiore a 12 per i mesi");
       document.inviadati.Data1.value = "";
       document.inviadati.Data1.focus();
       return false;
    }
    
    else if (document.inviadati.Data1.value.substring(6,10) < 1850) {
       alert("Impossibile utilizzare un valore inferiore a 1900 per l'anno");
       document.inviadati.Data1.value = "";
       document.inviadati.Data1.focus();
       return false;
    }
    
    if (document.inviadati.Data2.value.substring(2,3) != "/" ||
       document.inviadati.Data2.value.substring(5,6) != "/" ||
       isNaN(document.inviadati.Data2.value.substring(0,2)) ||
       isNaN(document.inviadati.Data2.value.substring(3,5)) ||
       isNaN(document.inviadati.Data2.value.substring(6,10))) {
          alert("Inserire Data2 in formato gg/mm/aaaa");
          document.inviadati.Data2.value = "";
          document.inviadati.Data2.focus();
          return false;
    }
    
    else if (document.inviadati.Data2.value.substring(0,2) > 31) {
       alert("Impossibile utilizzare un valore superiore a 31 per i giorni");
       document.inviadati.Data2.select();
       return false;
    }
    
    else if (document.inviadati.Data2.value.substring(3,5) > 12) {
       alert("Impossibile utilizzare un valore superiore a 12 per i mesi");
       document.inviadati.Data2.value = "";
       document.inviadati.Data2.focus();
       return false;
    }
    
    else if (document.inviadati.Data2.value.substring(6,10) < 1850) {
       alert("Impossibile utilizzare un valore inferiore a 1900 per l'anno");
       document.inviadati.Data2.value = "";
       document.inviadati.Data2.focus();
       return false;
    }
    
    
    }
    
    
    
    	function controllo(){ 
    	with(document.inviadati) { 
    	if(Data1.value=="") { 
    	alert("Errore: compilare il campo DATA 1"); 
    	Cognome.focus(); 
    	return false; 
    	} 
    	if(Data2.value=="") { 
    	alert("Errore: compilare il campo DATA 2"); 
    	Nome.focus(); 
    	return false; 
    	} 
    	} 
    
    	return true; 
    	} 
    
    
    
    
    
    function funzione3() {
     if (! controlla_data()) {
      return false;
     }
     return controllo();
    }
    
    
    
    
    	</script>
    
    	
    	</head>
    
    	<body>
    
    
    
    		
    
    
    		<table align ="center">
    
    
    
    			<form name="inviadati" onSubmit="return funzione3();" method="post" action = "Pagina2.php">
    	
    
    			<tr>
    			<td>Data 1</td>
    			<td><input name="Data1" maxLength="30" size=8></td>
    			</tr>
    
    			<tr>
    			<td>Data 2</td>
    			<td><input name="Data2" maxLength="50"  size=8></td>
    			</tr>
    
    			<tr>
    			<td><input name="Invia" type="submit" value="Invia"></td>
    			</tr>
    
    			</form>
    
    		</table>
    
    
    
    	</body>
    
    </html>

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova a mettere un alert prima del return true nella seconda funzione.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Ho provato così ma non mi mostra l'alert...

    codice:
    	
    
    function controllo(){ 
    	with(document.inviadati) { 
    	if(Data1.value=="") { 
    	alert("Errore: compilare il campo DATA 1"); 
    	Cognome.focus(); 
    	return false; 
    	} 
    	if(Data2.value=="") { 
    	alert("Errore: compilare il campo DATA 2"); 
    	Nome.focus(); 
    	return false; 
    	} 
    	} 
    
    	alert("Prova"); 
    
    	return true; 
    	}

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Nella 1° funzione non c'è il return true.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Ecco perfetto... funziona!

    Grazie

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.