【问题标题】:Javascript: "onchange" event does not work with "value" change in "text input" objectJavascript:“onchange”事件不适用于“文本输入”对象中的“值”更改
【发布时间】:2025-12-28 23:05:11
【问题描述】:

我有一个带有type="text" 的javascript input 对象以及一个由(相关行)创建的onchange 事件:

var id_box = document.createElement('input');
id_box.id = 'id_box';
id_box.type = 'text';
id_box.onchange = function()
{
    alert("Changed!");
}

为了在这个input 字段中更改这个value,我使用:

var a = document.createElement('a');
a.innerHTML = "A";
a.onclick = function()
{
    document.getElementById('id_box').value = 'A';
}

onchange 事件仅适用于通过键盘输入更改值,但不适用于通过上述函数更改值。有什么办法可以做到吗?

请看这个:http://jsfiddle.net/zCMdV/7/

【问题讨论】:

    标签: javascript-events


    【解决方案1】:

    你用的是什么浏览器?

    我已经做了这个例子,它对我有用...细微的变化是我将事件添加到输入中,然后将其附加到 div 元素。

    <div id="test"></div>
    <script type="text/javascript">
        var id_box = document.createElement('input');
        id_box.type = 'text';
        id_box.onchange = function()
        {
            alert("Changed!");
        }
        document.getElementById("test").appendChild(id_box);
    
    </script>
    

    在 JS Fiddle 上查看它的实际效果:http://jsfiddle.net/Sohnee/zCMdV/

    更新:

    如果您要自动更改值,您可以执行相同的操作来触发更改事件...

    http://jsfiddle.net/Sohnee/zCMdV/10/

    document.getElementById('id_box').onchange();
    

    【讨论】:

    • 我刚刚发现不是代码问题,而是在input字段中更改value的方法。请再次阅读我的问题。
    • 我建议您删除答案中未回答的部分,因为它让我失望,而且很可能让其他人失望..