当用户专注于输入字段时,我们使用自定义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!");
});
显示警报,但复选框值未更改(或已更改,但随后更改回来,正如我认为的那样)。
任何人都可以对此有所了解。
答案 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;
});