Spojrzałem na komentarze Serhijego na temat posta Sashy. Przykład JsFiddle Serhij warunkiem było ciekawe, a ja chciałem napisać odpowiedź, która opisuje zachowanie że Serhij wymienić:
powiedzmy, że mają postać imieniem myForm
:
var form = document.getElementById('myForm');
złapać przedstawienie podczas korzystania z przedstawienia przycisk (< input type = 'submit' >):
try {
form.addEventListener("submit", validationFunction, false);
} catch(e) {
form.attachEvent("onsubmit", validationFunction); //Internet Explorer 8-
}
Uwaga: Jeśli chcesz, aby zatrzymać formularza ze złożeniem, robisz validationFunction
return false.
Aby przesłać formularz za pośrednictwem javascript:
form.submit();
UWAGA: Jeśli używasz = "button" < input type onclick = "form.submit()"/>, że onSubmit obsługi zdarzeń dodana z attachEvent nie zostanie wywołany. Dlatego powinieneś użyć czegoś takiego:
< typ wejścia = "przycisk" onclick = "if (validationfunction()) form.submit();"/>
lub alternatywnie, jeśli masz przycisk:
Możesz dodać javascript, aby dołączyć do zdarzenia Click przycisku użytkownika. var btnValidateAndSubmit = document.getElementById ("btnValidateAndSubmit");
try {
btnValidateAndSubmit .addEventListener("click", validationAndSubmitFunction, false);
} catch(e) {
btnValidateAndSubmit .attachEvent("onclick", validationAndSubmitFunction); //Internet Explorer 8-
}
Wreszcie, powiedzmy, że pracuje się formularz internetowy SharePoint do edycji elementu listy, a chcesz dodać niestandardowe walidacji do formularza internetowego. Możesz dodać następujący javascript do formularza internetowego, aby dodać niestandardową weryfikację do przycisku onclick dla przycisków 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();
}
};
}
}
}
To nie działa. Zastanawiam się, dlaczego to jest przegłosowane? form.submit() nie robi tego samego, co spróbuj uruchomić ten kod na http://jsfiddle.net/RgRwp/18/ – Serhiy
@Serhiy: Czy kiedykolwiek twierdziłem, że tak jest? Pytanie brzmiało: "Kiedy już dokonałem sprawdzenia poprawności, jak mam przesłać formularz w javascript?" Myślę, że to odpowiada na ten fragment. –
Chyba nie. Sądzę, że właściwie odpowiedziałeś na oba pytania. Chodzi o to, że nie działają one w połączeniu ze sobą. Trochę mnie to irytowało, ponieważ ta kombinacja zmarnowała dużo czasu w przeszłości i nie chciałabym, żeby ktoś podszedł do tej dziury. Chyba powinienem po prostu edytować odpowiedź, zamiast narzekać w komentarzach. – Serhiy