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

    la pagina refresha da sola

    Ho un problema tanto stupido quanto fastidioso.

    Un classico Form da compilare sul quale, quando viene cliccato il submit, viene eseguito il check dei campi, prima di mandarlo allo script che carica i dati a db.

    Su IE6 tutto funziona a meraviglia ( ) mentre su Firefox4 e Chrome11 quando viene il messaggio di errore dovuto alla compilazione errata di un campo (un semplice alert), la pagina viene ricaricata, perdendo tutti i dati scritti nei moduli.

    Ho ricontrollato il codice ma non mi sembra di vedere niente di anomalo, magari è proprio cannata l'impostazione..

    ecco il codice

    codice:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>Modulo di raccolta dati</title>
    	<link rel="stylesheet" type="text/css" href="screen.css">
    	
    	
    	<script language="javascript">
    	<!--
    	  function Validazione() 
    	  {
    		 // Variabili associate ai campi del modulo
    		 var email = document.form1.email.value;
    		 var pec = document.form1.pec.value;
    		 
    		 // Espressione regolare dell'email
    		 var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    		 
    		 //Effettua il controllo sul campo NOME
    			if (!email_reg_exp.test(email) || (email == "") || (email == "undefined")) {      
    				alert("Inserire un indirizzo email corretto.");
    			   document.form1.email.select();
    			   return false;
    			}
    			else if (!email_reg_exp.test(pec) || (pec == "") || (pec == "undefined")) {
    			   alert("Inserire un indirizzo email pec corretto.");
    			   document.form1.pec.select();
    			   return false;
    			}
    			//INVIA IL MODULO
    			else {
    				alert('ciao');
    			   document.form1.action = "in.php";
    			   document.form1.submit();
    			}
    	  }
    	//-->
    	</script>
    
    	
    </head>
    <body>
    	<?php if($_GET['action'] === 'success') echo '<p id="success">MODULO INVIATO CORRETTAMENTE</p>'; ?>
    	<div id="container">
    		<h2>Modulo di raccolta dati</h2>
    					
    		<form id="form1" name="form1" method="post">	
    		
    			<fieldset><legend>Richiesta</legend>
    				<p class="first">
    					<label for="cognome">Cognome</label>
    					<input type="text" name="cognome" id="cognome" size="30" />
    				</p>
    				
    
    
    					<label for="nome">Nome</label>
    					<input type="text" name="nome" id="nome" size="30" />
    				</p>
    				
    
    
    					<label for="num_iscr_albo">Numero Iscrizione Albo</label>
    					<input type="text" name="num_iscr_albo" id="num_iscr_albo" size="30" />
    				</p>
    				
    
    
    					<label for="indirizzo_studio">Indirizzo Studio</label>
    					<input type="text" name="indirizzo_studio" id="indirizzo_studio" size="30" />
    				</p>
    				
    
    
    					<label for="num_telefono">Numero di Telefono</label>
    					<input type="text" name="num_telefono" id="num_telefono" size="30" />
    				</p>
    				
    
    
    					<label for="email">Indirizzo Email</label>
    					<input type="text" name="email" id="email" size="30" />
    				</p>
    				
    
    
    					<label for="pec">Indirizzo Posta Certificata</label>
    					<input type="text" name="pec" id="pec" size="30" />
    				</p>																					
    				
    
    
    					<label for="dom1">Domanda 1</label>
    					<textarea name="dom1" id="dom1" cols="30" rows="10"></textarea>
    				</p>
    				
    
    
    					<label for="dom2">Domanda 2</label>
    					<textarea name="dom2" id="dom2" cols="30" rows="10"></textarea>
    				</p>	
    				
    
    
    					<label for="dom3">Domanda 3</label>
    					<textarea name="dom3" id="dom3" cols="30" rows="10"></textarea>
    				</p>	
    				
    
    
    					<label for="dom4">Domanda 4</label>
    					<textarea name="dom4" id="dom4" cols="30" rows="10"></textarea>
    				</p>	
    				
    
    
    					<label for="dom5">Domanda 5</label>
    					<textarea name="dom5" id="dom5" cols="30" rows="10"></textarea>
    				</p>	
    			</fieldset>					
    
    			<p class="submit"><button onclick="Validazione()">Invia</button></p>		
    						
    		</form>	
    	</div>
    	
    </body>
    </html>

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Prova ad usare un pochino di fantasia nell'assegnare un nome alle variabili usate nello script, senza utilizzare lo stesso nome dei campi del form.
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Innanzitutto grazie per la risposta.

    Ho provato a modificare lo script in questo modo, ma la situazione non cambia.
    Il controllo viene comunque eseguito, perchè l'alert viene fuori.
    Il refresh avviene dopo che io clicco ok sull'alert.

    codice:
    <script language="javascript">
    	<!--
    	  function Validazione() 
    	  {
    		 // Variabili associate ai campi del modulo
    		 var campo_email = document.form1.email.value;
    		 var campo_pec = document.form1.pec.value;
    		 
    		 // Espressione regolare dell'email
    		 var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    		 
    		 //Effettua il controllo sul campo NOME
    			if (!email_reg_exp.test(campo_email) || (campo_email == "") || (campo_email == "undefined")) {      
    				alert("Inserire un indirizzo email corretto.");
    				document.form1.email.select();
    				return false;
    			}
    			else if (!email_reg_exp.test(campo_pec) || (campo_pec == "") || (campo_pec == "undefined")) {
    				alert("Inserire un indirizzo email pec corretto.");
    				document.form1.pec.select();
    				return false;
    			}
    			//INVIA IL MODULO
    			else {
    			   document.form1.action = "in.php";
    			   document.form1.submit();
    			}
    	  }
    	//-->
    	</script>

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Sarebbe meglio far gestire l'invio dal form aggiungendo onsubmit e richiamando la funzione col return <form id="form1" name="form1" method="post" onsubmit="return Validazione()" >
    e sostituendo il tasto button con un tasto submit, se non ti piace come soluzione prova aggiungendo un return false all'evento onsubmit del form <form id="form1" name="form1" method="post" onsubmit="return false;" >
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Originariamente inviato da cavicchiandrea
    Sarebbe meglio far gestire l'invio dal form aggiungendo onsubmit e richiamando la funzione col return <form id="form1" name="form1" method="post" onsubmit="return Validazione()" >
    e sostituendo il tasto button con un tasto submit, se non ti piace come soluzione prova aggiungendo un return false all'evento onsubmit del form <form id="form1" name="form1" method="post" onsubmit="return false;" >
    Grazie della risposta
    Due domandine:
    -il return false nell'evento onsubmit a cosa serve? cioè a chi ritorna false? e perchè?
    -i return false nei vari if dello script servono o non servono? Riguardando lo script mi sembrano inutili...

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da lord_nerevar
    Grazie della risposta
    Due domandine:
    -il return false nell'evento onsubmit a cosa serve? cioè a chi ritorna false? e perchè?
    Serve per bloccare l'invio form
    -i return false nei vari if dello script servono o non servono? Riguardando lo script mi sembrano inutili...
    Servono per bloccare la funzione
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Originariamente inviato da cavicchiandrea
    Serve per bloccare l'invio form

    Servono per bloccare la funzione
    In effetti inserento onsubmit non viene fatto il refresh, quindi problema risolto.

    Ma già che ci sono ne approfitto per capire questa cosa che non mi e' chiara. In che modo i return false dovrebbero aiutarmi nel bloccare la funzione? La funzione essendo entrata in un if, quando finisce le istruzioni salta fuori in ogni caso dall'if, o ricordo male?

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Di default le funzioni sono true, nel tuo caso essendoci un invio del form a fine funzione se non inserisci i false il form verrebbe spedito comunque.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.