2009-05-31 15 views

risposta

10

Diciamo che avere un form denominato myForm:

var form = document.getElementById('myForm'); 

per la cattura di presentazione:

try { 
    form.addEventListener("submit", someFunction, false); 
} catch(e) { 
    form.attachEvent("onsubmit", someFunction); //Internet Explorer 8- 
} 

Nota: Se si desidera interrompere la forma dall'invio, si effettua someFunction return false.

di inviare il modulo:

form.submit(); 
+1

Questo non funziona. Mi chiedo perché questo è svalutato? form.submit() non fa la stessa cosa di prova a eseguire questo codice su http://jsfiddle.net/RgRwp/18/ – Serhiy

+0

@Serhiy: Ho mai affermato che lo faccia? La domanda era: "Una volta che ho fatto la mia convalida, come faccio a inviare il modulo in javascript?" Penso che questo risponda a quel pezzo. –

+2

Immagino di no. E immagino tu abbia risposto correttamente a entrambe le domande. È solo che non funzionano in combinazione l'uno con l'altro. Questo mi ha infastidito un po 'perché questa combinazione ha sprecato molto del mio tempo in passato e odiavo che qualcuno scendesse quel buco. Credo che probabilmente dovrei solo modificare la risposta invece di lamentarmi nei commenti. – Serhiy

2

1) Siete alla ricerca di OnSubmit evento?

2) È possibile chiamare una funzione come validate() sull'evento onsubmit e restituire false se la convalida non riesce. Se false restituito restituisce false dalla funzione onsubmit.

può essere come,

<form name="test" OnSubmit = "return Submit()"> 

function Submit() 
{ 
return Validate() 
} 

function Validate() 
{ 
//Validation code goes here 
} 
4

È possibile utilizzare addEventListener(event, callback) ma non è mai stato adeguatamente supportato da Internet Explorer.

IE utilizza invece attachEvent(event, callback).

Si consiglia vivamente di utilizzare una funzione addEvent precompilata (lotti disponibili là fuori) o una libreria come jQuery, Prototype, Mootools, ecc. Poiché hanno tutte funzioni di gestione eventi eccellenti incorporate.

0

Ho dato un'occhiata ai commenti di Serhiy sul post di Sasha. L'esempio JsFiddle Serhiy fornita era interessante, e ho voluto scrivere una risposta che descrive il comportamento che Serhiy menzionato:

Diciamo di avere un form denominato myForm:

var form = document.getElementById('myForm'); 

per la cattura di presentazione quando si utilizza un submit pulsante (< input type = 'submit' >):

try { 
    form.addEventListener("submit", validationFunction, false); 
} catch(e) { 
    form.attachEvent("onsubmit", validationFunction); //Internet Explorer 8- 
} 

Nota: Se si desidera interrompere la forma di presentare, si fanno validationFunction return false.

di inviare il modulo via javascript:

form.submit(); 

NOTA: Se si utilizza un "bottone" < input type = onclick = "form.submit()"/>, i gestori di eventi OnSubmit aggiunti con il attachEvent non verrà chiamato. Pertanto, è necessario utilizzare qualcosa del tipo:

< tipo di input = "button" onclick = "if (validationfunction()) form.submit();"/>

o, in alternativa, se si dispone di un pulsante:

È possibile aggiungere javascript per associare all'evento click del pulsante. var btnValidateAndSubmit = document.getElementById ("btnValidateAndSubmit");

try { 
    btnValidateAndSubmit .addEventListener("click", validationAndSubmitFunction, false); 
} catch(e) { 
    btnValidateAndSubmit .attachEvent("onclick", validationAndSubmitFunction); //Internet Explorer 8- 
} 

Infine, diciamo che si sta lavorando off un modulo web di SharePoint per la modifica di un elemento della lista, e si desidera aggiungere convalida personalizzato per il modulo web. È possibile aggiungere il seguente javascript al modulo Web per aggiungere la convalida personalizzata a onclick per i pulsanti OK.

var oElements = document.getElementsByTagName("input"); 
for (var i=0; i< oElements.length; i++) 
{ 
    var elementName = oElements[i].getAttribute("Title"); 
    var elementType = oElements[i].getAttribute("type"); 
    var elementValue = oElements[i].value; 

    if (elementType=="button" && elementValue=="OK") 
    { 
    var okbutton = oElements[i]; 

    // alert("typeof okbutton.onclick = "+typeof okbutton.onclick); 
    if (typeof okbutton.onclick == "function") 
    { 
     var previousfunction = okbutton.onclick; 

     okbutton.onclick = function() 
     { 
      if (validateForm()) 
      { 
       previousfunction(); 
      } 
     }; 

    } 
    else 
    { 
     var aspnetForm = document.getElementById("aspnetForm"); 
     aspnetForm.attachEvent("onsubmit",validateForm); 

     okbutton.onclick = function() 
     { 
      if (validateForm()) 
      { 
       aspnetForm.submit(); 
      } 
     }; 
    } 


    } 
} 
Problemi correlati