使用文档上的jQuery捕获Esc键,但不是内容

时间:2012-01-09 09:36:54

标签: jquery keydown event-bubbling esc-key

想象一下HTML表单并加载了jQuery库。我希望如果有人当前没有专注于表单字段,并且他们单击Esc键,会弹出一个对话框,询问他们是否要关闭表单窗口(因为表单窗口作为新选项卡打开)

如果我尝试在$(文档)上捕获它,我遇到的麻烦就是事件冒泡,其中字段选择了这个,因此在字段中按Esc键会导致事件触发。

当没有字段具有焦点时,如何有效地(关键字)阻止事件气泡并在按下Esc时捕获?

2 个答案:

答案 0 :(得分:1)

您必须使用If语句检查所有输入都没有焦点:

if ($('input').is(":focus")){ ... }

my example中,我使用回车键按来检查焦点。

希望这有帮助。

答案 1 :(得分:0)

试试这个:

    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;