使用val()设置输入值时触发的jquery事件是什么?

3
我可以设置这个监听器:
$('input[type="text"]').on('keyup paste input change', function() {
  console.log('Hello!');
});

如果我打开开发者工具并执行:

$('input[type="text"]').val('a new value');

以上事件均未被调用。在这种情况下,我应该监听哪个事件?


为什么不直接通过JavaScript手动触发回调处理程序呢? - Pavel S.
6
.val()不会触发任何事件。 - JJJ
3
将文本输入框的值设置为“a new value”,并触发“change”事件。 - j08691
2个回答

6
更改元素的值程序化地不会触发事件,您需要自己完成。您可以使用jQuery中的触发器(trigger)来触发事件处理程序:
$('input[type="text"]').val('a new value').trigger('change');

-1

.val() 函数在执行时不会触发事件。我的意思是,尽管由于 jQuery 的工作方式,它在技术上可以具有该功能。如果您使用 .val() 函数,您可以使用 $(element).val("something").click()/change()/input()/keyup() 手动执行所需的事件。


1
.val()函数在执行时被设计成不触发事件。这意味着有意写入的代码不会触发事件。没有引发事件与.val()或jQuery无关。使用纯JavaScript进行编程更改值也不会引发“change”事件。 - Nope
我并没有暗示任何东西。然而,jQuery很容易被设计成实现这个功能。现在我只是说它没有这样做,你需要相应地处理它。我特别指的是jQuery,在其.val()函数的文档中并没有明确引用是否运行事件执行。 - Nomad101

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