フォームの値がonsubmit
関数であるかどうかをテストする必要があります。通常、形式はonsubmit="return valid();"
です。これが関数であるかどうか、そしてそれが呼び出し可能かどうかを判断する方法はありますか?typeofを使用すると、それが文字列であることが返されるだけで、あまり役に立ちません。
編集:もちろん、私は「returnvalid();」を理解しています。文字列です。私は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()を呼び出しても既存のonsubmitは起動されないため、まだ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;
}
} );
おそらくこれをより良くする方法についての提案?