如何禁用特定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。
答案 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) {
...
});