我在HTML文本框和JavaScript上发现了一个奇怪的反常现象,我已经把范围缩小到html/javascript特有的地方,我希望有人能告诉我这一点。
我已经下载并实现了一个日历插件,它创建一个简单的带有日历的层,并在选择时将所选日期传递回文本框。
我想要做的是在文本框发生变化时捕获(使用onchange),然后调用Ajax函数来更新数据库……
问题是,onchange永远不会被调用...我已经能够用下面这段非常简单的代码来证明这一点。当按钮被点击时,它会改变值,然后触发onchange并显示一个警告框……
<input type="button" name="setValue" id="setValue" value="setValue" onClick="document.getElementById('textinput').value='Updated'">
<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)">
这是标准吗?有解决办法吗?
发布于 2010-10-28 16:35:34
onchange事件不是由textinput的值的编程更改触发的。您必须在自己更改值之后调用要执行的代码。
发布于 2011-05-12 21:03:39
textboxes和textarea元素上的onchange事件仅在元素失去焦点时触发,并且在获得焦点时它的值现在不是它的值。
发布于 2018-06-20 04:59:21
这是一个非常古老的帖子,答案可以在其他地方找到,但我想我应该把它贴在这里,因为我通过研究找到了它。
可以通过以下几种方式以编程方式调用元素的onChange调用:
document.getElementById("elementID").onchange();
或
var element = document.getElementById('elementID');
var event = new Event('change');
element.dispatchEvent(event);
https://stackoverflow.com/questions/4041048
复制相似问题