2

当用户关注输入字段时,我们使用自定义 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!");
});

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

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

4

2 回答 2

3

为什么要绑定复选框的“焦点”?

这对我来说没有多大意义,因为“焦点”主要用于文本框或文本区域。我会使用.clickor.change代替,我怀疑你会有更好的运气。

在 jsfiddle (http://jsfiddle.net/65CRb/1) 上做了一些测试,绑定focus在 Chrome 中甚至根本不起作用。我怀疑 IE/FF 中发生了一些奇怪的事件,当您集中注意力时,这些事件不会传播到实际控件本身。

于 2011-08-19T13:50:25.223 回答
0

focus不会改变checked复选框的属性。您必须明确更改其检查属性。像这样的东西。

$('#test').focus(function(){
    this.checked = !this.checked;
});
于 2011-08-19T13:51:34.617 回答