Tôi cần kiểm tra xem giá trị của biểu mẫu có phải onsubmit
là một hàm hay không. Định dạng thường là onsubmit="return valid();"
. Có cách nào để biết đây có phải là một hàm hay không và nó có thể gọi được không? Sử dụng typeof chỉ trả về rằng đó là một chuỗi, điều này không giúp tôi nhiều.
CHỈNH SỬA : Tất nhiên, tôi hiểu rằng "return valid ();" là một chuỗi. Tôi đã đặt replace
nó xuống thành "valid ();", và thậm chí là "valid ()". Tôi muốn biết nếu một trong hai cái đó là một hàm.
CHỈNH SỬA : Đây là một số mã, có thể giúp giải thích sự cố của tôi:
$("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;
}
} );
CHỈNH SỬA 2 : Đây là mã mới. Có vẻ như tôi vẫn phải sử dụng eval, vì việc gọi form.submit () không kích hoạt các tệp gửi đến hiện có.
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;
}
} );
Đề xuất về cách có thể làm điều này tốt hơn?