我已成功将文件级别的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时,至少有一个输入控件应该有焦点。
答案 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!');
}
});
});
答案 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';
然后使用它可以使用的代码。