我的html正文中有一个文本框:input type="text" id="text-input"
当用户按下回车键时,我正在使用它来聚焦:
<script>
$(document).keypress(function(e) {
if(e.keyCode == 13) {
$("#text-input").focus();
}
});
</script>
我用来试用它的网页上只有文本框。当我点击空白区域,然后按回车键,“|”提示将向下错位。如果我重复这个点击并按回车键,那么应该在文本框中的“|”会继续向下移动。
出了什么问题?
答案 0 :(得分:1)
尝试使用keyup
代替keypress
$(document).keyup(function(e) {
if(e.keyCode == 13) {
$("#text-input").focus();
}
});
在chrome中测试,结果不同。
注意: keypress =(keydown和keyup 2 事件)。可能这是问题,但不确定。
答案 1 :(得分:1)
的 I found that returning false corrects the behavior: 强> 的
$(document).keypress(function(e)
{
if(e.keyCode === 13)
{
$("#text-input").focus();
return false;
}
});
为了改进这一点,您实际上可以使用e.preventDefault();
和e.stopImmediatePropagation();
而不是return false;
的组合来确保一旦命中此处理程序,除了{{1你想要的是什么:
.focus()
唯一需要注意的是$(document).keypress(function(e)
{
if (e.keyCode === 13)
{
$("#text-input").focus();
e.preventDefault();
e.stopImmediatePropagation();
}
});
仅适用于代码中此处理程序后定义的事件处理程序。这意味着,如果您在e.stopImmediatePropagation();
之前将另一个处理程序绑定到文档的按键,它将继续被击中。因此,为了确保调用此方法,只需调用它,您需要确保它是代码中定义的第一个处理程序。
的 See an example here 强> 的