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