如果初始事件返回false,我们如何停止执行事件监听器?
让我们举例说: -
<form id="cForm" name="cForm" method="post" onsubmit="return validate();">
...
</form>
<script type="text/javascript" >
function validate() {
return false;
}
$("#cForm").submit(function() {
// if validate() returns false do not execute this
});
</script>
我试过了:
var form = document.getElementById('cForm');
var oldEvent = form.onsubmit;
form.onsubmit = function() {
return oldEvent && alert("test");
};
但它始终警告“测试”。
答案 0 :(得分:1)
<强> DEMO 强>
<form id="cForm" name="cForm" method="post"></form>
function validate() {
return false; // try with true
}
$("#cForm").submit(function( e ) {
if(!validate){
e.preventDefault();
alert('invalid...') ;
}else{
alert('VALID!!') ;
}
});
如果您无法更改内嵌onsubmit
<强> DEMO 强>
function validate() {
var test = true;
if(test){
alert('VALID!!!');
}else{
alert('invalid...');
return false;
}
}
答案 1 :(得分:1)
你可以这样做:
onsubmit
删除form
属性,因为您已将 jQuery submit
事件绑定到该属性。submit
方法中添加如下所示的验证代码。<强> JS:强>
$("#cForm").submit(function () {
// if validate() returns false do not execute this
if (!validate()) return false;
});
<强>更新强>
根据您的要求,您可以这样做:
$("#cForm").submit(function () {
var status = true;
try {
status = this["onsubmit"]();
if (typeof (status) === "undefined") status = true;
} catch (e) {
status = true;
}
return status && alert("test");
});