失去焦点时执行Jquery函数的文本框

21

我有一个文本框,当文本框失去焦点时,即用户点击文本框外部时,我希望运行一些jQuery代码。

我尝试过这样做:

$("#textbox").focusout(function () {
    alert("hello");

});

但是我收到一个错误,指出“对象不支持此属性或方法”。

那么我应该怎么做呢?


你在评论中说它是1.4.2,你绝对确定吗?有没有可能在页面的下面包含一个旧版本的jQuery? - Nick Craver
是的,我确定我只在主页面上导入了它,没有在其他地方。我的系统上也没有早期版本。是的,jQuery已经被导入到页面中。其他函数,如button(),也正在被使用并正常工作。 - twal
@twal - 你有这个页面的链接吗? - Nick Craver
所以你放弃了,用了 blur叹气 - T.J. Crowder
哈哈,当我重新下载了1.4.2并用它替换了新的版本时,on focusout对我起作用了。不确定为什么,但现在它可以工作了,所以我很高兴! - twal
显示剩余2条评论
4个回答

18
jQuery("#textbox").blur(function() {
  alert("hello");
});

blur是指元素失去焦点时触发的事件。请查看jQuery.blur

编辑

不确定您是否需要,但如果您真的想使用focusout,请查看T. J. Crowder的解决方案。然而,在您的情况下,blur事件可能是您需要的,因为您希望检测文本框本身失去焦点。focusout当元素或该元素内的任何元素失去焦点时会被触发。


模糊效果对我有用,谢谢!不确定为什么在焦点离开时会出错,但这样可以工作。谢谢!!! - twal
focusout事件同样会在文本框上触发,但它也会冒泡。 - Nick Craver

18

focusout是在v1.4中添加的。三个想法:

  1. 你是否在使用较早版本的jQuery?
  2. 你的字段是否真正拥有id为textbox
  3. 你是否还使用了Prototype或MooTools(或其他可能接管$的东西)?如果是,请使用jQuery的noConflict模式并使用jQuery代替$

除此之外,这应该(也确实)可以工作。

以下是一个示例(使用像你一样的警报):http://jsfiddle.net/QzmZp/1/
和另一个不使用警报(因为那会让IE7出问题):http://jsfiddle.net/QzmZp/2/
之前有人问过浏览器版本,我已经尝试过Chrome 5、IE6、IE7和FF3.6;都正常。

我同时做了一个input和一个textarea,因为我不确定你使用的是哪一个。


我刚刚双重确认了,它是1.4.2。 - twal
我再次仔细检查了一下,我的字段具有文本框的ID,我将其复制并粘贴到选择器中以确保正确。但问题仍然存在。 这个问题在IE和FF浏览器上都存在,没有影响。 - twal
不,我没有其他库。我只是重新下载了jQuery 1.4.2,并用新的替换了现有的,然后voila focusout就可以工作了。很奇怪...无论如何,谢谢大家的帮助!!! - twal
@twal:恕我直言,为什么要接受与“模糊”相关的答案呢?在我看来,两个答案都没有解决您的问题(尽管都试图)。接受答案是指当答案解决了问题时;点赞是针对那些有帮助但未解决问题的答案。虽然这两个答案都做到了后者,但都没有做到前者。 - T.J. Crowder
1
明白了,谢谢大家。这是一个很好的网站,有很多人愿意提供帮助,我很喜欢它。 - twal
显示剩余5条评论

7
$("#idOfTextField").blur(function(){

  //your code

});

3
尝试提供更好的答案。如果您的回答与已有的相同,请忽略此请求。 - Sami

4
$(document).ready(function () {
        ////////////////////////ALL textbox to upper
        $("input[type=text]").blur(function () {
            $(this).val($(this).val().toUpperCase());
        });
    }); 

当文本框失去焦点时,将所有文本框转换为大写。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接