Программная манипуляция со значением элемента DOM не вызывает событие onchange - PullRequest
0 голосов
/ 16 мая 2010

У меня есть скрытое поле формы, и когда нажимается кнопка, значение скрытого поля изменяется. Теперь я добавил наблюдателя в скрытое поле, прислушиваясь к изменениям. Однако по какой-то причине прослушиватель событий никогда не включается, даже если значение скрытого элемента изменяется. Я использую Prototype и Firefox 3.6.

Код выглядит примерно так:

button.observe('click', function(event) {
  hiddenField.setValue(someValue);
});

hiddenField.observe('change', function(event) {
  alert('It works!');
});

Кто-нибудь знает, почему последний наблюдатель не выполняет?

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 мая 2010

Вам нужно event.simulate.js

Запустить событие ..

button.observe('click', function(event) {
  hiddenField.setValue(someValue);
  hiddenField.simulate('change');
});

А затем соблюдайте это:

hiddenField.observe('change', function(event) {
  alert('It works!');
});
0 голосов
/ 16 мая 2010

Я не думаю, что input скрытые элементы реагируют на это событие.

Я не знаю прототип, но я думаю, что инициируемые события полностью зависят от браузера.

Вот пример с jQuery на JSbin . Обратите внимание, что изменение текста самостоятельно вызывает событие, однако следующая часть кода, которая изменяет значение с помощью сценария, не запускает его.

...