html jQuery焦点在Chrome中不起作用

sshcrbum  于 2022-12-02  发布在  jQuery
关注(0)|答案(5)|浏览(156)

请看这把小提琴:http://jsfiddle.net/yg49k/
以下代码在FireFox中运行良好,但在最新版本的Chrome中不起作用。
于飞:

<input type="text" id="one" placeholder="Type two chars" />
<input type="text" id="two" placeholder="It should focus here" />

查询:

$("#one").on("input", function() {
    if($("#one").val().length == 2) { $("#two").focus(); }
});

有人知道我该怎么解决这个问题吗?

qij5mzcb

qij5mzcb1#

看起来像是Chrome中的一个bug。有时候它太快了,无法正确执行事件;)
已找到解决方法http://jsfiddle.net/Rd2rZ/

$("#one").on("input", function() {
    if($("#one").val().length == 2) { 
        setTimeout(function(){
            $("#two").focus();
        }, 1);
    }
});

使用setTimeout时,尽量减少延迟,这样会降低Chrome的速度,但会让它正常工作。

fsi0uk1n

fsi0uk1n2#

您应该用途:

$("#one").on("keyup paste",function() {
    console.log($(this).val());
    if($(this).val().length == 2) { $("#two").focus(); }
});

DEMO
对于#five处理程序也是如此。
oninput事件似乎与onkeypress具有相同的行为。

np8igboo

np8igboo3#

$("#one").keydown(function(){
   if($(this).val().length==2)
   {
      $("#two").focus();
   }
});
olmpazwi

olmpazwi4#

$("#one").on("input", function() {
    if($("#one").val().length == 2) { $("#two")[0].focus(); }
});

试试这个!

lg40wkob

lg40wkob5#

我遇到了同样的问题,并使用以下代码修复了它:
您还应该为输入提供一个name属性,以使其正常工作。

$("#one").on("input", null, null, function() {  
   if($("#one").val().length == 2) {  
       setTimeout(function() { $('input[name="one"]').focus() }, 3000);  
   }  
});

希望这能帮助那些使用其他建议没有让它工作的人。

相关问题