我需要测试一个表单的 onsubmit
的值是否是一个函数。这种格式通常是 onsubmit="return valid();"
。有没有办法判断这是否是一个函数,以及它是否可调用?使用 typeof 只返回一个字符串,这对我没什么帮助。
编辑 : 当然,我理解“ return valid() ;”是一个字符串。我已经将它的 replace
d 值降低到“ 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.subit ()并不会触发现有的 on 提交。
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;
}
} );
关于如何可能做得更好的建议?