2011-12-02 66 views
2

如果它沒有所需的值,我將焦點放回文本框。在執行此功能後,文本框不會回聚。但它正確地提醒(alert("Must be 1");)。如果沒有所需的值,則將焦點放回焦點文本框

$("#textbox").blur(function(event){ 
     if ($(this).text != "1"){ 
      event.preventDefault(); 
      alert("Must be 1"); 
      $(this).focus(); 
     } 
}); 

任何想法?

回答

2

你可以這樣做:

$("#textbox").blur(function(event){ 
     var tb = this; 
     if ($(this).val() != "1"){ 
      event.preventDefault(); 
      alert("Must be 1"); 
      setTimeout(function() { $(tb).focus(); }, 1); 
     } 
}); 

通過將「.focus()」中的超時通話,您在一個單獨的事件循環開關發生。還要注意,您試圖錯誤地獲取值(「.text」),並且還必須保留對「tb」中元素的引用。

我懷疑這可能不適用於Safari。 Safari是真的不願意服從「.focus()」調用,它被「alert()」弄糊塗了。當然,如果您通過其他方式將消息傳遞給用戶(請這樣做:-),那麼它可能會起作用。

相關問題