Jquery focus()带有复选框问题

时间:2011-08-19 13:46:49

标签: jquery input checkbox onfocus

当用户专注于输入字段时,我们使用自定义jquery插件来处理我们的帮助弹出窗口。但是我偶然发现了一个奇怪的问题。该插件使用以下代码触发帮助弹出窗口:

$(this).focus(function(){
    // Show popup help panel here
});

但是,如果此代码应用于type =“checkbox”的输入,则会显示帮助弹出窗口,但复选框值会快速否定,因此看起来没有从勾选更改为未勾选,反之亦然。这种情况发生在IE9和FF6中(未在其他浏览器中尝试过)。我尝试了这个非常简单的代码只是为了确保我不会疯狂,问题仍然存在:

...在html中:

<input id="test" type="checkbox" checked="checked" />

...在头部 - javascript

$('#test').focus(function(){
    alert("help!");
});

显示警报,但复选框值未更改(或已更改,但随后更改回来,正如我认为的那样)。

任何人都可以对此有所了解。

2 个答案:

答案 0 :(得分:3)

为什么要将'焦点'绑定到复选框?

这对我来说没有多大意义,因为'焦点'主要用于文本框或文本框。我会改用.click.change,我怀疑你会有更好的运气。

对jsfiddle(http://jsfiddle.net/65CRb/1)和绑定focus的某些测试在Chrome中根本不起作用。我怀疑IE / FF中有一些奇怪的事件在你聚焦时没有传播到实际控件本身。

答案 1 :(得分:0)

focus不会更改复选框的checked属性。您必须显式更改其已检查的属性。这样的事情。

$('#test').focus(function(){
    this.checked = !this.checked;
});