禁用div的keydown

时间:2014-08-18 18:00:11

标签: jquery keydown keycode

如何禁用特定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为#34; myDiv"的div禁用它们我添加了

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

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

没有内容可编辑的div不会重复击键。检查切换此FIDDLE

中的contentEditable媒体资源

答案 1 :(得分:1)

您正在寻找的是event.stopPropagation()http://api.jquery.com/event.stoppropagation/

答案 2 :(得分:0)

尝试:

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