Я использую 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, оба не работают. Я не ищу обходной путь, мне просто интересно узнать, почему это не работает.