【问题标题】:disable keydown for div禁用 div 的 keydown
【发布时间】:2014-08-18 18:00:11
【问题描述】:

如何禁用特定 div 的 keydown?我尝试过的所有选项都使我的 div 不再接受任何键。我要为我的 div 禁用的键是 1 和 2。

我在这里列出了每个键的作用:

    $(document).keydown( function(e)
            {
                var press= "";
                if ( boolKeyDepressed )
                    return;
                else
                    boolKeyDepressed = true;

        var e = e || window.event;
                var ltr = e.keyCode ? e.keyCode : e.charCode;

//            alert( "You pressed " + ltr );

                if ( ltr == 13 ) 
                {
                    event.preventDefault();
                }


                    switch(ltr)
                    {
                        case 49: // "1"
                        case 97: // "1"


                                FunctionHandleRsp("1") 
                               //does something with the value 1




                            break;

                        case 50: // "2"
                        case 98: // "1"



                        FunctionHandleRsp("2") 
                      // does something with the value 2


                    }
                }

//etc etc 

为我添加的 id 为“myDiv”的 div 禁用它们

if (screens[current].id=="myDiv"){
                            event.preventDefault();
                            }

$("#myDiv").unbind('keydown');

$("#myDiv).keydown(function(event) { 
             return false;
                    });

但是这些方法都不起作用。我把它们放在一个在屏幕上显示 div 的函数中。这些都是为了禁用我所有 div 的 keydown。

【问题讨论】:

    标签: jquery keydown keycode


    【解决方案1】:

    你要找的是event.stopPropagation():http://api.jquery.com/event.stoppropagation/

    【讨论】:

    • 很高兴听到这个消息。谢谢。 :)
    【解决方案2】:

    通常一个div不能有键盘输入焦点,所以它永远不会收到击键。

    您正在对文档进行击键。这里不涉及div。当通过文档接收到键事件时,您可能想要检查鼠标是否在特定的 div 上。取决于您可以处理关键事件。

    否则,如果您将其contentEditable 属性设置为true,您将能够直接通过div 接收关键事件。

    没有内容可编辑的 div 不会接收击键。检查在此FIDDLE 中切换contentEditable 属性

    【讨论】:

    • 所以必须设置 element.contentEditable 属性。必须检查焦点。
    • @dreamlab:不一定。键事件也可以从输入元素通过 div 冒泡/传播。它可以在 div 处处理。这就是事件委托在 jQuery 中的工作方式。
    • 它不一定是可编辑的——热键不就是这样吗?
    • 真;我也打算添加它,但是从 OP 的问题来看,我假设 div 可以拥有焦点。
    【解决方案3】:

    试试:

    $(":not(#somediv, #somdiv *)").keydown(function(e) {
        ...
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      相关资源
      最近更新 更多