【问题标题】:Capturing Esc Key with jQuery on Document, but Not Contents在文档上使用 jQuery 捕获 Esc 键,但不是内容
【发布时间】:2012-01-09 09:36:54
【问题描述】:

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

如果我尝试在 $(document) 上捕获它,我遇到的问题是事件冒泡,字段拾取它,因此在字段中按下 Esc 键会导致事件触发。

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

【问题讨论】:

    标签: jquery keydown event-bubbling esc-key


    【解决方案1】:

    您必须使用 If 语句来检查没有任何输入具有焦点:

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

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

    希望这会有所帮助。

    【讨论】:

    • 这适用于所有浏览器吗?说IE6还是7?
    【解决方案2】:

    试试这个:

        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;
    

    【讨论】:

    • 您不需要明确指定每个输入。这可能会导致问题。您可以只使用 $(input)。
    • @AlexThomas thanx,你说得对,我编辑了它:) 我还添加了“select”
    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2016-05-28
    • 2012-01-20
    相关资源
    最近更新 更多