Muszę sprawdzić, czy wartość formularza onsubmit
jest funkcją. Format to zazwyczaj onsubmit="return valid();"
. Czy istnieje sposób, aby stwierdzić, czy jest to funkcja i czy można ją wywołać? Użycie typeof po prostu zwraca, że jest to ciąg znaków, co niewiele mi pomaga.
EDYCJA : Oczywiście rozumiem, że "return valid ();" jest ciągiem. Mam replace
d go do "valid ();", a nawet "valid ()". Chcę wiedzieć, czy któryś z nich jest funkcją.
EDYCJA : Oto kod, który może pomóc wyjaśnić 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;
}
} );
EDYCJA 2 : Oto nowy kod. Wygląda na to, że nadal muszę używać eval, ponieważ wywołanie form.submit () nie uruchamia istniejących funkcji 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, jak to zrobić lepiej?