2013-07-31 3 views
1

У меня есть html-список флажков, но я не знаю, как получить «document.attachEvent», чтобы найти эти флажки в onclick?IE присоединяет событие к флажку?

Я не был уверен, могу ли я установить модель события, специфичную для IE, а затем в document.attachEvent создать цикл for, который проходит через каждый флажок и обрабатывает каждый из них? Кроме того, мои флажки имеют разные имена, поэтому я не могу checkboxname.attachEvent, если я не сделал это для каждого из них.

Мои элементы достаточно динамичны, что я попытался добавить событие en к самому широкому предку, который был документом, к которому я мог бы использовать событие, чтобы получить цель и тип безрезультатно.

Большое спасибо.

+0

вы можете рассмотреть возможность использования jQuery и делегирования событий (или делегирования событий самостоятельно). –

+1

Я действительно не могу сказать, что вы просите. 'document.attachEvent' ничего не« находит ». Вам нужно найти элементы. В конечном итоге вам нужно либо привязать обработчики к каждому, либо привязать к предку, и выяснить, что было нажато. –

+0

Вы можете получить щелчок с помощью 'window.event.srcElement', или, если вы передали объект события функции обработчика в свои аргументы, вы можете использовать его вместо' window.event'. Если это не решит вашу проблему, пожалуйста, покажите код ... – Teemu

ответ

1

Некоторые исправления в коде:

document.attachEvent('onclick', function (e) { 
    var target = e.srcElement; 
    if (target.type === 'checkbox') { 
     if(target.checked){ 
      button.disabled = false; 
     } else { 
      button.disabled = true; 
     }  
    } 
}); 

Третий аргумент не используется в обработке событий в IE модели. e.srcElement относится к щелканному элементу.

Я бы предложил вам обернуть флажки в div или какой-либо другой элемент, а затем прикрепить прослушиватель событий к обертке. Когда ваша страница становится больше, проверка всех кликов на документе будет трудоемкой. Если у вас есть только один флажок, лучше привязать обработчик к себе.

+0

Боюсь, что нет практического пути. Только использование обертки решит проблему должным образом. У вас есть элемент 'form' для ввода? Если это так, вы можете прикрепить к нему обработчик событий клика вместо 'document'. – Teemu

+0

Существует проблема с условным выражением выше, которое должно быть «==», но код отлично работает. Благодарю. –

+0

@AprilRandolph Ха-ха ... Я скопировал его с вашей скрипки: D, исправлено. – Teemu

Смежные вопросы