У меня есть форму. Я включаю Dojo. Все работает нормально. Я использую Dojo для изменения класса, значений и атрибутов входных элементов на основе ввода пользователем (вроде проверки).Dojo присоединить событие к динамически созданному элементу
Проблема в том, что из-за IE я должен создать новый элемент ввода (который я знаю), если я хочу изменить «тип» ввода с «текст» на «пароль».
После того, как я создаю этот элемент (который имеет все те же атрибуты и тот же идентификатор) в качестве элемента, что замененные, мои Dojo функции, такие как ...
dojo.query("#password2")
.connect("onclick",function(){
// if password2 is equal to the default text
if(this.value == "Confirm your password"){
this.value = "";
UpdateType(this); // this is the function that dynamically creates the new input element to have a type of 'password'
}
dojo.query("#list_password2").removeClass("error");
});
... больше не работают на вновь созданных элементов. Я столкнулся с этой проблемой раньше и использовал для использования jQuery и имел плагин livequery, который переназначал события для элементов. Есть ли плагин или встроенная функциональность для Dojo для этого, о чем я не знаю?
+1 Спасибо, что напомнили мне о dojo.behavior. Кажется, что он не отслеживает изменения, но вместо этого вам нужно вызвать apply() после обновления DOM. – Maine