以编程方式更新时,不会调用HTML JavaScript onChange Handler

php*_*der 5 html javascript onchange

我发现HTML文本框和JavaScript出现了异常,我将其缩小为html / javascript的特殊性,我希望有人可以对此进行教育。

我已经下载并实现了日历插件,该插件可创建带有日历的简单图层,并在选择时将所选日期传递回文本框。

我想做的是在文本框更改时捕获(使用onchange),然后调用Ajax函数来更新数据库...

问题是,onchange永远不会被调用...我已经能够通过下面的这个非常简单的代码来证明这一点...单击按钮时,它会更改值,然后应触发onchange并显示警报框...

<input type="button" name="setValue" id="setValue" value="setValue" onClick="document.getElementById('textinput').value='Updated'">&nbsp;
<input type="button" name="clearValue" id="clearValue" value="clearValue" onClick="document.getElementById('textinput').value=''"><br>
<input type="text" name="textinput" id="textinput" onChange="alert(this.name)">
Run Code Online (Sandbox Code Playgroud)

这是标准吗?有解决方法吗?

Shr*_*les 5

这是一个非常古老的线程,可以在其他地方找到答案,但我想我应该将其发布在这里,因为我通过研究找到了它。

可以通过以下几种方式以编程方式调用元素的 onChange 调用:

document.getElementById("elementID").onchange();
Run Code Online (Sandbox Code Playgroud)

或者

var element = document.getElementById('elementID');
var event = new Event('change');
element.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)


Har*_*men 0

为什么不创建一个自定义函数,如下所示:

function change( val ){
    var el = document.getElementById( 'textinput' );
    el.value = val;
    alert( val );
}
Run Code Online (Sandbox Code Playgroud)