如何使用jquery检测是否在DIV中按下了Enter键?

时间:2013-05-29 10:58:09

标签: jquery keypress

我已成功将文件级别的EnterKey事件挂钩,如下所示:

    $(document).keypress(function (e) {
        if (e.which == 13) {
            alert('You pressed enter!');
        }
    });

但是,我无法将ID为#34; myDiv"的Div挂钩EnterKey事件。

<div id="myDiv"></div>

$("#myDiv").keypress(function (e) {
     if (e.which == 13) {
         alert('You pressed enter!');
     } 
 });

是否可以检测到Div内的EnterKey按?实际上,Div包含一些输入/选择控件,用于过滤网格的内容。我想挂钩EnterKey事件,以便在按下EnterKey时我可以过滤网格。

修改 请注意我在div中有输入(我故意不在这里显示)。我不想手动为Div中的每个输入控件挂钩事件。另外,我假设当用户按下EnterKey时,至少有一个输入控件应该有焦点。

8 个答案:

答案 0 :(得分:34)

试试这个

 <div id="Div1">
    <input type ="text" id="aa"/>
    sdfsd hsjdhsj shdj shd sj
 </div>

Jquery的

$(function(){
 $("#Div1 input").keypress(function (e) {
    if (e.keyCode == 13) {
        alert('You pressed enter!');
    }
 });
});

Demo

答案 1 :(得分:4)

DOM元素可以接收关键事件的唯一方法是,如果他有焦点

将焦点设置为div处理程序中的onready

$(function() {
   $('#mydiv').focus();
});

或者通过tabindex attribute将重点放在您的元素上。

编辑:正如@roasted解释的那样,您还可以为div设置CSS规则,以避免重新发布问题:

#myDiv {
  outline: 0 solid;
}

答案 2 :(得分:3)

你真正需要做的是将keypress事件绑定到div中的所有表单元素,如input,select和textarea,如:

$("#myDiv input, select, textarea").keypress(function (event) {
    if (event.which == 13) {
        event.preventDefault();
        alert('You pressed enter!');
    }
});

这里需要注意的是使用event.preventDefault()。因为,如果你不使用它,按回车键可能会导致提交表格,这显然你不想在这里。您只想按Enter键过滤网格的内容。因此,只要按下回车键,您就可以从输入元素中获取值并相应地过滤网格。

答案 3 :(得分:1)

您的问题可能更精确 - 您希望检测嵌套在某个div上的输入对象上的KeyPressed事件。也许你可以试试:

$("#myDiv input,select").keypress(function (e) {
        if (e.which == 13) {
            alert('You pressed enter!');
        }
    });

答案 4 :(得分:1)

您可以先关注提交按钮或标签,然后单击

  $('#id of input button').focus();

 $('input[type="submit"]').focus();

然后按回车

 $("#inputid").keypress(function (e) {
   if (e.which == 13) {
    alert('You pressed enter!');
  }
});

答案 5 :(得分:0)

按Enter键主要是输入内容或提交。 在div中有一个突出显示的按钮或文本框,然后按Enter键。

答案 6 :(得分:0)

$("#inputid").keypress(function (e) {
    if (e.which == 13) {
        alert('You pressed enter!');
    }
});

您希望将事件处理程序绑定到特定的输入/按钮(如某些“过滤器”按钮)

答案 7 :(得分:0)

您可以先使用以下方法设置对div的关注:

window.location.hash = '#name of div';

然后使用它可以使用的代码。