2011-02-24 79 views
6

我正在使用jquery保持焦點上模糊的文本框,如果驗證失敗。但它在IE中工作,但不工作FF。有什麼建議麼?jQuery的重點不工作模糊

$("#inputBoxId").blur(function() { 
    if ($(this).val() < 10) 
     $("#inputBoxId").focus(); 

}); 
+0

傢伙,我「已經問題與.focus()它在條件滿足的條件also..no問題後得不到焦點!! – Manu 2011-02-24 13:10:52

回答

13

看起來你需要根據這個question使用的setTimeout。由於您正在將焦點集中到一個元素上,因此您需要考慮一段時間才能讓元素先聚焦。

$("#inputBoxId").blur(function() { 
    if ($(this).val() < 10) { 
     setTimeout(function() { 
      $("#inputBoxId").focus(); 
     }, 100); 
    } 
}); 

的它jsfiddle工作實施例,測試了對鉻dev的信道,Firefox和IE8。

+0

似乎只有一個FF問題。也0將工作,而不是100 。 – krishna 2011-02-24 17:40:36

+0

謝謝,這絕對節省了時間 – Arjun 2017-04-28 07:55:34

1

val()將返回字符串,而不是數字。嘗試轉換,它應該工作:

var value = parseInt($(this).val(), 10); 
if (isNaN(value) || value < 10) 
     $("#inputBoxId").focus(); 

這也將處理非數值。

+0

我不認爲這會產生變化,因爲當字符串與數字進行比較時會發生類型強制,雖然'「」<10 === true',所以也許會有所作用;) – 2011-02-24 12:50:14

+0

@ Box9可能是舊版FF FF 't做自己的類型轉換..? – 2011-02-24 13:10:36

+0

問題不是與類型..它與焦點事件..現在解決:) – Manu 2011-02-28 04:46:50

0

$(this).val().length也將給長度

$("#inputBoxId").blur(function() { 
    if($(this).val().length < 10){ 
      $(this).focus(); 
    } 
}); 
0

//網頁的曝光率。

document.addEventListener('visibilitychange', function() { 

     if (document.hidden) { 
      // stop running expensive task 

     } else { 
      // page has focus, begin running task 

     } 
    });