2012-10-15 146 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>