程序修改时触发事件未被激活。

10

我有一个HTML选择下拉列表,其值可能会通过编程进行编辑。当用户从页面编辑值时,我的更改事件会触发,但当值在代码中更改时,事件不会触发。我需要在这两种情况下都触发事件。有什么方法可以实现吗?

$("#dropdownId").on('change', function () {
    //do stuff
});
...
var df = document.frmMain;
df.dropdownId.value = someValue; //change event does not fire

2
你尝试过将更改函数封装成实际函数吗?这样,当您修改下拉列表时,可以手动调用它。 - johnnyRose
这是“按设计要求的”。当程序改变值时触发更改事件是不好的。 - Daniel Wu
3个回答

13
您可以使用 jQuery 的 .trigger 来触发事件。在您的情况下:
$("#dropdownId").trigger("change");

4
在设置完值后,您需要使用jQuery的trigger函数手动触发事件:
 $("#dropdownId").trigger('change');

2
只需注意代码意外执行监听器/触发器递归循环的风险即可。这实际上是默认情况下不会触发的原因。 - Katana314
当触发单个触发器时,@Katana314,这真的应该发生吗? - KAD

1
使用jQuery来设置选择并触发更改事件。
$('#'+df.dropdownId).val(someValue).change();

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