当数据被分配到输入文本框时,输入文本框的 onchange 事件不会触发。

4

这是我的HTML页面

<script>
function set()
{
document.getElementById("txt").value++;
}
</script>
<input id="txt" type="text" onchange="javascript:alert('txt changed');" value="0">
<br/>
<input type="button" onclick="set()" value="Set Data"/>

当我按下按钮时,文本框的值正在改变,但onchange事件没有触发,但是当我手动输入文本框的值时,它会触发onchange事件。
我想要的是在单击按钮时,在文本框中的数据更改时调用JavaScript函数。
你能帮忙吗?
2个回答

3

您可以使用document.getElementById("txt").onchange();从代码中触发onchange事件,在通过代码更改值后。

更新

将您的设置函数更改为接受文本框的ID。

function set(textboxid)
{
    var tb = document.getElementById(textboxid);
    tb.value++;
    tb.onchange();
}

这是一个快速的回复,但我的问题是:我有5-6个文本框,每个文本框都有单独的按钮。在这种情况下,我必须在每个按钮单击事件中都调用这个函数。还有其他的替代方法吗? - Harsha

0

这似乎是一个浏览器的bug。使用Firebug,我已经记录了所有输入事件。当您使用set()函数更改值时,会触发任何事件。

我已在Firefox中进行了测试。


注意:如果这不是一个 bug,那至少是关于事件如何工作的错误定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接