Mettiamo ordine.
Ammettiamo un codice di questo tipocodice:<form method="post" action="parseform.php" onsubmit="return checkFields()" id="myForm"> <input type="text" name="campo1"/> <input type="submit" value="invia" /> </form> <script type="text/javascript"> function checkFields() { var myForm = document.getElementById("myForm"); if(myForm.campo1.value === "") { // supponiamo che non lo vogliamo vuoto alert("non hai riempito tutti i campi") return false; } else { alert("OK"); return true; } } </script>
la chiave è ovviamente il onsubmit="return checkFields()"
Cosa vuol dire?
E' sostanzialmente uno short di un codice di questo tipo:
Quindi in pratica quello che c'è dentro l'attributo "onsubmit" è quello che c'è dentro la funzione che viene richiamata in quel modo lì.codice:var myForm = document.getElementById("myForm"); myForm.addEventListener("submit", function() { return checkFields(); });
Che tradotto è: prendi il form myForm, alla sottomissione di esso (on submit) e prima del comportamento di default del browser (che carica la pagina parseform.php) esegui quella funzione.
E qui la chiave: cosa farebbe un "return false" in una funzione di questo tipo? Semplicemente blocca il suddetto comportamento di default del browser. Quindi hai che la pagina parseform.php non viene caricata e di conseguenza blocchi l'invio del form. Ottimo sistema per implementare un metodo di validazione.
Un modo equivalente è il seguente:
preventDefault è un metodo che "impedisce" il comportamento di default che scatenerebbe l'evento event (in questo caso l'evento submit). E' del tutto equivalente al "return false"codice:var myForm = document.getElementById("myForm"); myForm.addEventListener("submit", function(event) { if(!checkFields()) { event.preventDefault(); } });
Questo meccanismo vale per qualsiasi evento. Anche i click sulle ancore (<a>).
Quell'onclick previene il comportamento di default del browser a seguito dell'evento, ovvero quello di aprire la pagina pagina.html.codice:<a href="pagina.html" onclick="return false">Clicca qui</a>
Ovviamente al posto del "false" può andarci una qualsiasi funzione che ritorna true o false. Anche custom.
codice:<a href="pagina.html" onclick="return confirm('Sicuro di voler aprire la pagina?')">Clicca qui</a>

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando