0
以编程方式将单选按钮设置为checked = true不触发更改事件。我怎么知道单选按钮是否被脚本检查过?如何确定单选按钮是否被第三方JavaScript设置为checked = true?
见这个例子:http://jsfiddle.net/wykEx/7/
在Firebug的,没有变化的事件记录到控制台,除非你手动点击单选按钮。
以编程方式将单选按钮设置为checked = true不触发更改事件。我怎么知道单选按钮是否被脚本检查过?如何确定单选按钮是否被第三方JavaScript设置为checked = true?
见这个例子:http://jsfiddle.net/wykEx/7/
在Firebug的,没有变化的事件记录到控制台,除非你手动点击单选按钮。
做到这一点的一种方法是设置一个计时器并轮询更改。当然,它可能不是最优雅的解决方案,但它应该足够好,并且应该适用于所有浏览器。
这样做的最大问题是,如果代码过于频繁地更改了输入元素的checked属性,那么您可能会丢失一些转换。
window.setInterval(function(){
var elem = $('twoRadioBtn');
if(elem.checked != elem.lastchecked)
{
console.log('TWO changed!');
elem.lastchecked = elem.checked;
}
}, 100); // poll every 100 ms.
感谢您的回答Miky。如果可以,我显然希望避免投票。我希望有人会有另一种解决方案。我甚至尝试过使用object.watch,但至少在Firefox中,似乎在checked属性更改时不会触发watch事件。 – rorsach
我不知道你是否能够在所有浏览器中找到一致的解决方案 - 如果还有一种方法......祝你好运! –