2012-10-15 201 views
2

我問了this question,因爲我需要的東西,我在使用jQuery時遇到了一些問題。所以我打開這個問題是因爲其他人可能也有這個問題。is(「:focus」)總是返回true

在張貼在我的其他問題的答案,用戶費利克斯告訴我,做這樣的事情:

$(document).keypress(function(e) { 
    e.preventDefault(); 

    if(e.which == 13) { 
     if($("#searchInput").is(":focus")) { 
      alert("search form submitted"); 
      return false; 
     } else { 
      alert("save form submitted");     
      return false; 
     } 
    } 
}); 
​ 

這似乎是我所需要的,然而,病情if($("#searchInput").is(":focus"))總是返回true ,不管什麼控制重點。

任何人都知道爲什麼會發生這種情況或者我可以做到這一點?

+5

你可能想檢查jQuery版本。 http://stackoverflow.com/questions/967096/using-jquery-to-test-if-an-input-has-focus –

+3

這工作正常,如預期http://jsfiddle.net/KkJ2t/ – Dev

+0

Yeap ...我的jQuery版本過時了。回答這個問題,我可以接受它。 – gabsferreira

回答

0

我的jQuery的版本是過時的,我剛從here的最新版本和現在的代碼行運行。

+0

和dev確保你的其他模塊不會因爲庫中的更改而受到影響。我爲所有控件編寫了驗證。當我將庫從1.4.1升級到1.8.2時,我看到一些控件的奇怪行爲未遵循適當的驗證。 –

+0

對,我會檢查一下。謝謝。 – gabsferreira

2

它可能是由舊版本的jquery引起的。 如果它大於1.6,那麼:focus將不起作用,如果你沒有定義它。 版本1.6,並進一步有:focus選擇器,我們不必單獨定義它。 所以,只要升級你的圖書館版本,如果它是舊的或定義:focus在你的js文件的某處。在這裏檢查API爲: jquery version 1.6

2

您的jQuery版本可能已過時。獲取最新版本:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>