【问题标题】:onchange event of text box not working if i change text value dynamically如果我动态更改文本值,文本框的 onchange 事件不起作用
【发布时间】:2016-10-21 20:23:01
【问题描述】:

Onchange 事件在我更改文本框时触发,但是当我尝试动态更改文本框值时它没有触发为什么?

这是我的简单演示,当我单击按钮时,我动态更改了文本框的值,但仍然没有触发文本框 onchange 事件。

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body>

<h1>My First Heading</h1>
<p>My first paragraph.</p>
<input type="text" id="txtno" value="" onchange="javascript:alert('Hi');">
<input type="button" id="btnadd" value="ClickMe">

<script>
$(document).ready(function(){
    $("#btnadd").click(function(){
        $("#txtno").val('Hello'); 
    });
});
</script>

</body>
</html>

【问题讨论】:

  • 为什么要隐藏它们?
  • 真的吗?您是否尝试更改它的值并且函数不执行?
  • 您能否也显示您更改输入的部分
  • 在我的隐藏文本框中值将动态出现,我可以通过将其转换为隐藏文本来查看

标签: javascript jquery


【解决方案1】:

通过JS改变输入值不会触发.onChange事件。您必须手动触发它

$('#room_1').trigger('change');

我没有看到您在代码中更改输入字段值的位置。

【讨论】:

  • Justinas thanyou 的回复,我采纳了你的建议,但仍然没有触发 onchange 事件
  • @JunedAnsari 帮不上忙,因为看不到您更新输入值的位置。
  • @JunedAnsari 更新后的问题代码将是$("#txtno").val('Hello').trigger('change');
  • 我从您之前的回答中得到了解决方案,非常感谢
【解决方案2】:

“更改”事件仅在用户提交值更改时在控件上触发。如果您以编程方式更改字段,则需要触发“更改”事件。

在这种情况下:

<script>
$(document).ready(function(){
    $("#btnadd").click(function(){
        $("#txtno").val('Hello').trigger('change');
    });
});
</script>

【讨论】:

    猜你喜欢
    • 2021-02-23
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2019-11-26
    • 2013-02-02
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多