我正在使用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('!');
}
);
}
);
}
);
我已经在Firefox和IE7中测试过,两者都不起作用。我不是在寻找解决方法,只是好奇为什么它不起作用。