フォームの値が関数かどうかをテストする必要が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 : これが新しいコードです。form.submit() を呼び出しても既存の onsubmits が起動しないため、まだ eval を使用する必要があるようです。
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;
}
} );
おそらくこれをより良くする方法についての提案はありますか?