当用户在文档上按Enter键时,我会显示一个包含alert()
的警告框。
浏览器(Mac OS X 10.8.4上的Chrome 27)的默认行为是当您将注意力集中在警告框上时按Enter键,它将关闭它。这将触发文档上的输入,再次显示警告框。你可以看到它如何循环。
请注意,当我使用鼠标在警告框中单击“确定”时,循环不会发生。
如何阻止此循环?
一个例子(我使用它的真实方式要复杂得多):
$(document).keyup(function(e) {
e.preventDefault();
var keyCode = e.keyCode || e.which;
if (keyCode == 13) {
alert('Hello world!');
}
return false;
});
答案 0 :(得分:1)
您可以委派keydown
事件并使用stopPropagation()
来防止事件在警告对话框中触发时冒泡到文档中,如下所示:http://jsfiddle.net/KNyzc/
$(document).on( "keydown", function(e) {
e.stopPropagation();
var keyCode = e.keyCode || e.which;
if (keyCode == 13) {
alert('Hello world!');
}
});
(实际上,您根本不需要使用stopPropagation
。只需使用keydown事件。)