当更改来自另一个函数时,onchange事件不会触发

baa*_*roz 11 javascript dom-events

我有一个输入文本,从javascript函数(带倒计时的计时器)中获取其值.

我想在输入文本为0时引发一个事件,所以我使用了更改eventListener.

不幸的是,当更改来自javascript函数时,它似乎没有引发事件.

即使更改来自javascript而不是来自用户,我如何强制更改事件才能工作?

谢谢你的帮助

mu *_*ort 16

精细手册:

更改
当控件失去输入焦点并且自获得焦点后其值已被修改时,会发生更改事件.此事件对INPUT,SELECT和TEXTAREA有效.元件.

通过代码修改文本输入的值时,不会触发更改事件,因为没有焦点更改.您可以使用createEvent和自己触发事件dispatchEvent,例如:

el = document.getElementById('x');
ev = document.createEvent('Event');
ev.initEvent('change', true, false);
el.dispatchEvent(ev);
Run Code Online (Sandbox Code Playgroud)

和现场版:http://jsfiddle.net/ambiguous/nH8CH/

  • 如果您使用任何现代事件监听方法,这将不起作用; 只有使用旧的`onchange`属性才能工作.您应该使用DOM事件API来触发事件. (2认同)