JQuery-“JQuery|&引用;聚焦文本框时光标未对齐

JQuery-“JQuery|&引用;聚焦文本框时光标未对齐,jquery,Jquery,我的html正文中有一个文本框:input type=“text”id=“text input” 当用户按下enter键时,我使用此按钮将其聚焦: <script> $(document).keypress(function(e) { if(e.keyCode == 13) { $("#text-input").focus(); } }); </script> $(文档)。按键(功能(e){ 如果

我的html正文中有一个文本框:
input type=“text”id=“text input”

当用户按下enter键时,我使用此按钮将其聚焦:

<script>
    $(document).keypress(function(e) {
        if(e.keyCode == 13) {
            $("#text-input").focus();
        }
    });
</script>

$(文档)。按键(功能(e){
如果(e.keyCode==13){
$(“#文本输入”).focus();
}
});
我用来试用的网页中只有文本框。当我单击空白区域并按enter键时,“|”提示将向下对齐。如果我重复单击并按enter键,文本框中的“|”会越来越向下移动


出了什么问题?

尝试使用
keyup
而不是
keypress

$(document).keyup(function(e) {
    if(e.keyCode == 13) {
        $("#text-input").focus();
    }
});​
示例:

在铬中测试,结果不同

注意:keypress=(向下键和向上键2事件)。可能这就是问题所在,但不确定。

$(document).keypress(function(e) 
{
    if(e.keyCode === 13) 
    {
        $("#text-input").focus();

        return false;
    }
});​

为了改进这一点,实际上可以使用
e.preventDefault()的组合
e.停止即时复制()
而不是
返回false
确保一旦命中此处理程序,除了您想要的
.focus()
之外,不会发生其他任何事情:

$(document).keypress(function(e) 
{
    if (e.keyCode === 13) 
    {
        $("#text-input").focus();

        e.preventDefault();
        e.stopImmediatePropagation();
    }
});
唯一需要注意的是
e.stopImmediatePropagation()仅适用于在代码中此处理程序之后定义的事件处理程序。也就是说,如果在
.focus()
之前有另一个处理程序绑定到文档的按键,它将继续被命中。因此,为了确保只调用了this,您需要确保它是代码中定义的第一个处理程序


我想您指的是光标?什么浏览器?也许一个JSFIDLE示例?一个测试用例的JSFIDLE和浏览器信息将非常有用。我将提供帮助:我正在使用Chrome18。若要复制,请将鼠标光标放在文本框的下方(外部)。单击,然后按enter键。反复重复这两个步骤。此外,当输入文本时会出现一些奇怪的行为,但我没有具体的指示来实现这些行为。哦,是的,光标。浏览器:谷歌浏览器,最新。1) 在文本框中单击。光标很好。2) 单击离焦文本框附近的空白处。3) 按回车键对焦。光标应该关闭。使用键控键可以工作。谢谢我希望我知道真正的原因是什么…:这也行,谢谢!但我使用keyup,因为JQuery文档说keypress在浏览器中可能有不同的行为。知道为什么返回false有效吗?
returnfalse=
e.preventDefault()&&
e.stopPropagation()感谢您的详细说明。:)
$(document).keypress(function(e) 
{
    if(e.keyCode === 13) 
    {
        $("#text-input").focus();

        return false;
    }
});​