想象一个HTML表单和jQuery库被加载。我希望这样做,如果有人当前没有关注表单字段,并且他们单击Esc键,就会弹出一个对话框,询问他们是否要关闭表单窗口(因为表单窗口是作为新选项卡打开的)。
如果我试图在$(document)上捕获它,我遇到的问题是在字段中出现事件冒泡,所以在字段中按Esc键会导致事件触发。
当没有字段具有焦点时按下Esc时,我如何有效地(关键词)防止事件气泡和捕获?
您必须使用If语句来检查是否没有焦点输入:
if ($('input').is(":focus")){ ... }
在我的例子中,我使用回车键来检查焦点。
希望这能有所帮助。
试试这个:
var cancelClose=false; // This is a global variable
$(document).ready(function(){
$('input, textarea,select').each(
function(){
$(this).focus(
function(){
cancelClose=true;
}
);
$(this).blur(
function(){
cancelClose=false;
}
);
}
);
});
然后,在文档按下事件上
比如:
if (cancelClose)
return false;