23

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

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

但是,我无法在 ID 为“myDiv”的 Div 上挂钩 EnterKey 事件。

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

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

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

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

4

8 回答 8

35

试试这个

 <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!');
    }
 });
});

演示

于 2013-05-29T11:07:12.493 回答
4

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

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

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

或者通过tabindex 属性将焦点放在您的元素上。

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

#myDiv {
  outline: 0 solid;
}
于 2013-05-29T11:05:30.837 回答
3

您在这里真正需要做的是将按键事件绑定到所有表单元素,例如 div 内的输入、选择和文本区域,例如:

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

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

于 2013-05-29T11:16:58.100 回答
1

您的问题可能更准确 - 您想检测嵌套在某些 div 中的输入对象上的 KeyPressed 事件。也许你可以尝试:

$("#myDiv input,select").keypress(function (e) {
        if (e.which == 13) {
            alert('You pressed enter!');
        }
    });
于 2013-05-29T11:01:25.430 回答
1

您可以先聚焦提交按钮或标签,然后单击它

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

或者

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

然后按回车

 $("#inputid").keypress(function (e) {
   if (e.which == 13) {
    alert('You pressed enter!');
  }
});
于 2015-01-22T19:30:38.743 回答
0

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

于 2013-05-29T11:06:09.243 回答
0
$("#inputid").keypress(function (e) {
    if (e.which == 13) {
        alert('You pressed enter!');
    }
});

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

于 2013-05-29T11:06:41.363 回答
0

您可以首先使用以下方法将焦点设置在 div 上:

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

然后使用您的代码它将起作用。

于 2014-01-30T05:34:23.873 回答