javascript - 如果初始事件返回 false,则停止执行事件监听器

标签 javascript jquery

如果初始事件返回 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");
};

但它总是提醒“测试”。

最佳答案

你可以这样做:

  • 首先从 form 中删除 onsubmit 属性,因为您已经将 jQuery submit 事件绑定(bind)到它。
  • 接下来在 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");
});  

关于javascript - 如果初始事件返回 false,则停止执行事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19726547/

相关文章:

javascript - Laravel 5.5 中的多字段排序

javascript - jQuery 从 php 文件返回数据

jquery - 如何在表格的 x 轴上应用水平滚动条?

javascript - 将动态变量注入(inject)到 React Native 的 WebView 的注入(inject)的 JavaScript 字符串中

javascript - Firefox 弹出窗口锁定父窗口直到它关闭

javascript - 如何在 javascript 循环中创建批处理以选择 x 行,然后选择下 x 行,直到完成所有行?

javascript - 如何使用 JavaScript 交换屏幕上的元素

javascript - 如何从 JavaScript 通过 TCP 发送 OSC?

javascript - JavaScript 用户输入中的正则表达式

javascript - 在 Javascript 中获取子元素