Rob*_*bin 5 javascript checkbox prototype onchange
我正在使用Prototype监视复选框,因此我可以向它们添加javascript检查.单击复选框所在的tr或td时,应选中该复选框.
当您直接单击复选框时,会触发onchange事件,因此您将收到警报.当javascript更改复选框'的值时(单击tr或td时),不会触发onchange.为什么在间接更改复选框时不会触发onchange?
这是我正在使用的JavaScript.
Element.observe(window, 'load', function() {
/* If a tr or td is clicked, change the value of the checkbox. */
$$('#results tr').each(function(el) {
el.observe('click', function(e) {
if(!e.target) { e.target = e.srcElement; }
if(e.target.nodeName == 'TD' || e.target.nodeName == 'TR') {
$('compare-product'+this.id).checked = ($('compare-product'+this.id).checked === false) ? true : false;
}
});
});
/* Monitor if the status of a checkbox has changed. */
$$('#results tr td input').each(function(el) {
el.observe('change', function(e) {
alert('!');
}
);
}
);
}
);
Run Code Online (Sandbox Code Playgroud)
我在Firefox和IE7中测试过,两者都无法正常工作.我不是在寻找一种解决方法,我只是想知道为什么这不起作用.
这在UI框架中通常并不罕见.如果以编程方式更改控件的状态,则假定您还能够以编程方式触发它应该具有的任何副作用.它为程序员提供了更大的灵活性,并避免了在初始化或拆卸过程中状态不稳定的错误.(例如,在初始化期间,您可以在设置几个相关控件的状态之前设置一个控件的状态.如果第一个控件的更改处理程序立即触发,则它将执行而其他控件处于不一致状态.)
| 归档时间: |
|
| 查看次数: |
4745 次 |
| 最近记录: |