2010-05-16 78 views
0

我有隐藏的表单字段,并且当按下按钮时,隐藏字段的值会更改。现在,我添加了一个观察者到隐藏字段,监听发生的变化。但是,出于某种原因,即使隐藏元素的值发生了变化,事件侦听器也从不会踢入。我正在使用Prototype和Firefox 3.6。以编程方式操作DOM元素值不会触发onchange事件

代码看起来大致是这样的:

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

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

有没有人有一个线索,为什么后者观察者不执行?

谢谢!

回答

1

你需要event.simulate.js

火灾的事件..

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

,然后观察它:

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

我应该为自己没有想到这一点而捶胸顿足。非常感谢David。因为我已经使用了Prototype,所以我只是使用了hiddenField.fire('custom:change'),它的功能就像一个魅力:) – 2010-05-16 01:21:48

+0

是的,如果触发非本地事件对你来说没问题,你可以只激发命名空间的自定义事件像你展示:) – 2010-05-16 02:23:09

0

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

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

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

+0

感谢亚历克斯。我尝试将元素更改为正常的文本类型字段,以查看它是否是隐藏类型,但结果相同。傻的东西,真的。尽管如此,发起定制事件还是有诀窍的。 – 2010-05-16 11:29:41

相关问题