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();
}
};
}
}
}
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
@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. –
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