簡體   English   中英

jQuery 焦點在 Chrome 中不起作用

[英]jQuery focus not working in Chrome

請看這個小提琴: http://jsfiddle.net/yg49k/

以下代碼在 FireFox 中運行良好,但在最新版本的 Chrome 中不起作用。

HTML:

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

jQuery:

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

有誰知道我該如何解決這個問題?

好像是Chrome中的一個錯誤。 有時候執行事件太快了;)

找到了解決方法http://jsfiddle.net/Rd2rZ/

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

使用setTimeout具有最小延遲。 它會降低Chrome的速度並使其正常運行。

你應該使用:

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

DEMO

#five處理程序也一樣。

oninput事件似乎與onkeypress具有相同的行為。

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

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

試試這個!

我遇到了同樣的問題,並使用以下代碼修復了它:
您還應該為輸入設置name屬性以使其正常工作。

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

希望這可以幫助那些沒有使用其他建議的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM