【问题标题】:How to stop event in javascript? [duplicate]如何在javascript中停止事件? [复制]
【发布时间】:2014-02-28 11:42:17
【问题描述】:

考虑跟随,

<body>
    <form id="form1" runat="server">
        <div>
            <input type="text" id="txt1" />
            <input type="button" id="btn1" value="Submit"/>            
        </div>
    </form>
    <script>         
        $("#txt1").live("blur", function () {
            console.log('blur');            
            return false;
        });

        $("#btn1").live("click", function () {
            console.log('click');
            return false;
        });
    </script>
</body>

上面的代码将在触发相应事件时记录模糊事件和点击事件。 如果单击或更改文本框中的某些内容,然后单击按钮 btn1 模糊和单击事件将分别发生。我想要的是如果由于 btn1 而发生模糊事件,则不应发生单击事件,它应该只记录模糊事件,我想要阻止点击事件的发生。 这个怎么做?有人可以帮忙吗?

【问题讨论】:

  • 查看我的 (@user2727841) 答案和链接...如果它满足您的要求,请投票给其他人以供参考....
  • 好的,你的问题解决了……

标签: javascript jquery events


【解决方案1】:

您不能像这样“阻止”其他/外国事件。 Event.preventDefault() 和/或 Event.stopPropagation()(当从 jQuery 事件处理程序中返回 false 时都会触发它们)将允许您停止并防止完全相同的事件在父节点上进一步处理。

在您的实例中,您需要自己的逻辑。使用一些变量并正确设置它们并在必要时检查值。例如,在单击时设置FOOBAR = true,在blur 中检查if( FOOBAR ) 并采取行动。

【讨论】:

    【解决方案2】:

    试试这个

    <form id="form1" runat="server">
       <div>
          <input type="text" id="txt1" />
          <input type="button" id="btn1" value="Submit"/>            
       </div>
    </form>
    

    javascript 代码

    $("#txt1").on("blur", function (event) {
       event.preventDefault();
       alert('blur');            
       return false;
    });
    $("#btn1").on("click", function (event) {
       event.preventDefault();
       alert('click');
       return false;
    });
    

    还测试它here 并记住 live 关键字已从 jquery 1.9 中删除,在 jquery 1.9 或更高版本中使用 on 而不是 live

    【讨论】:

    • Thanxx,这可行,但由于一些兼容性问题,我无法使用“on”功能。所以我无法引用事件。
    • 它不适用于 console.log。
    • 它与控制台一起使用,因此您已经在控制台中看到了它。
    【解决方案3】:

    你需要销毁一个事件看演示

    希望对你有所帮助。

    jsfiddle.net/rkumar670/5a86V

    【讨论】:

    • 我认为您的页面已被删除。
    • Rahul,感谢您的回复,但它会永久破坏点击事件,我不希望这样。
    【解决方案4】:

    Here 是通过添加超时来解决它的一种方法。

    var inFocus = false;
    
    $("#txt1").focus(function () {
        inFocus = true;
        $("#log").prepend("<p>focus</p>");
    
    });
    $("#txt1").blur(function () {
        setTimeout(function(){inFocus = false;},200);
        $("#log").prepend("<p>blur</p>");
    });
    $("#btn1").click(function () {
        if (!inFocus) {
            $("#log").prepend("<p>click</p>");
        }
    });
    

    fiddle example,我把日志放到了窗口。

    【讨论】:

      猜你喜欢
      • 2013-08-07
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多