如何在javascript中停止事件? [复制]

Posted

技术标签:

【中文标题】如何在javascript中停止事件? [复制]【英文标题】:How to stop event in javascript? [duplicate] 【发布时间】: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) 答案和链接...如果它满足您的要求,请投票给其他人以供参考.... 好的,你的问题解决了…… 【参考方案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

【讨论】:

我认为您的页面已被删除。 试试这个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,我把日志放到了窗口。

【讨论】:

以上是关于如何在javascript中停止事件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中复制指针事件的行为:无

如何在 JavaScript 中捕获右键单击事件? [复制]

如何在 javascript/typescript 事件回调中访问它,同时保留 removeEventListener 的能力? [复制]

如何在事件上设置断点? [复制]

在 JavaScript 事件处理中,为啥“return false”或“event.preventDefault()”和“停止事件流”会有所不同?

Javascript:如何启用 stopPropagation?