Почему onchange на флажке не запущен, когда флажок изменяется косвенно

Я использую Прототип для контроля флажков, таким образом, я могу добавить, что 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, оба не работают. Я не ищу обходное решение, мне просто любопытно знать, почему это не работает.

5
задан Robin 29 January 2010 в 10:16
поделиться

1 ответ

Это не редкость в рамках пользовательских интерфейсов в целом. Если вы измените состояние управления программным управлением, предполагается, что вы также способны программно запустить любые побочные эффекты, которые он должен иметь. Это дает программистам больше гибкости, и это позволяет избежать ошибок, где состояние находится в потоке во время инициализации или разрыва. (Например, во время инициализации вы можете установить состояние одного элемента управления перед установкой состояния нескольких зависимых. Если обработчик изменений для первого управления сразу же выполнится, когда другие элементы управления находятся в непоследовательном состоянии.)

5
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: