【问题标题】:jQuery on change/input not working when updating value via JS [duplicate]通过JS更新值时,更改/输入的jQuery不起作用[重复]
【发布时间】:2017-03-25 18:27:45
【问题描述】:

我注意到,当 Javascript 本身完成更改时,$('#firstId') 的事件没有触发。

为什么会这样?

有没有办法仍然触发事件?

这是一个例子:

$('#firstId').on('change input paste', function(){
  console.log("this is the input event being fired");
});

$('#randomButton').on('click', function(){
  $('#firstId').val(Math.floor(Math.random()*2147483647 )+1);
  console.log("randomButton being fired");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span for="firstId">number: </span>
<input type="number" id="firstId"/>
<p>Or</p>
<button id="randomButton">Get a random number</button><br>

【问题讨论】:

  • 对不起,什么不工作?
  • 从 JS 更新后必须手动触发必要的功能
  • @AniketSahrawat 他的意思是如果我这样做$("#firstId").val('test') 不会触发任何事件

标签: javascript jquery jquery-events jquery-on


【解决方案1】:

这是因为上面通过处理程序附加的所有事件都是由用户操作而不是通过代码触发的。您可以在这里使用.trigger().change() 来触发事件:

$('#firstId').val(Math.floor(Math.random()*2147483647 )+1).change();

$('#firstId').val(Math.floor(Math.random()*2147483647 )+1).trigger('change');

【讨论】:

  • 正是我想要的,谢谢你提醒我事件必须由用户输入触发
  • @KevinKloet:很高兴它有帮助:)
  • 谢谢,真的很有帮助!对于任何使用更好的输入监听方法.on("input") 的人,记得改用.trigger("input") :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-09
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多