Мне нужно проверить, является ли значение формы onsubmit
функцией. Формат обычно onsubmit="return valid();"
. Есть ли способ узнать, является ли это функцией, и может ли она быть вызванной? Использование typeof просто возвращает, что это строка, которая мне не очень помогает.
EDIT: Конечно, я понимаю, что "return valid();" это строка. У меня replace
d до "valid();" и даже "valid()". Я хочу знать, является ли любая из них функцией.
EDIT. Здесь приведен код, который может помочь объяснить мою проблему:
$("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: здесь новый код. Кажется, что мне все еще нужно использовать eval, потому что вызывающий form.submit() не запускает существующие 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;
}
} );
Предложения о возможностях, как это сделать лучше?