以编程方式操作DOM元素值不会触发onchange事件

时间:2010-05-16 01:11:07

标签: events prototypejs onchange

我有一个隐藏的表单字段,当按下按钮时,隐藏字段的值会改变。现在,我在隐藏字段中添加了一个观察者,监听发生的变化。但是,出于某种原因,即使隐藏元素的值发生变化,事件监听器也不会启动。我正在使用Prototype和Firefox 3.6。

代码看起来大致如下:

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

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

有没有人知道为什么后一个观察者不会执行?

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要event.simulate.js

解雇活动..

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

然后观察它:

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

答案 1 :(得分:0)

我认为隐藏的input元素不会响应该事件。

我不知道原型,但我认为触发的事件完全取决于浏览器。

以下是JSbin上jQuery的示例。请注意,更改文本会自动触发事件,但是通过脚本更改值的下一部分代码不会触发它。