Muszę sprawdzić, czy wartość funkcji onsubmit
formularza jest funkcją. Format jest zwykle onsubmit="return valid();"
. Czy istnieje sposób sprawdzenia, czy jest to funkcja i czy można ją wywołać? Użycie typeof powoduje tylko, że jest to ciąg znaków, co nie pomaga mi zbytnio.Testowanie, czy wartość jest funkcją
EDYTOWANIE: Oczywiście, rozumiem, że "return valid();" jest ciągiem. Mam do "valid();", a nawet "valid()". Chcę wiedzieć, czy którykolwiek z nich jest funkcją.
EDIT: Oto niektóre kodu, które mogą pomóc w wyjaśnieniu mój problem:
$("a.button").parents("form").submit(function() {
var submit_function = $("a.button").parents("form").attr("onsubmit");
if (submit_function && typeof(submit_function.replace(/return /,"")) == 'function') {
return eval(submit_function.replace(/return /,""));
} else {
alert("onSubmit is not a function.\n\nIs the script included?"); return false;
}
});
EDIT 2: Oto nowy kod. Wygląda na to, że nadal muszę używać eval, ponieważ wywołanie form.submit() nie uruchamia istniejących onsubmits.
var formObj = $("a.button").parents("form");
formObj.submit(function() {
if (formObj[0].onsubmit && typeof(formObj.onsubmit) == 'function') {
return eval(formObj.attr("onsubmit").replace(/return /,""));
} else {
alert("onSubmit is not a function.\n\nIs the script included?");
return false;
}
});
Sugestie dotyczące tego, jak to zrobić lepiej?
skąd pochodzi f in f.onsubmit? – Art
'f' jest instancją formularza. Przekaż go do funkcji testOnsubmitAndSubmit jako argument. (Wiem, że to pytanie jest dość stare, ale może moja odpowiedź kiedyś kogoś uratuje :)) – zeroos