如何在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/typescript 事件回调中访问它,同时保留 removeEventListener 的能力? [复制]
在 JavaScript 事件处理中,为啥“return false”或“event.preventDefault()”和“停止事件流”会有所不同?