首页 > 解决方案 > 从某些外部资源修改 DDL 值时调用 DDL 的 Change 事件

问题描述

当从某些外部资源修改下拉值时,如何在下拉列表的 JQuery 中调用更改事件?

如果我从下拉列表中更改值,下面的代码效果很好。

<select name="month" id="month">
   <option value="Jan">Jan</option>
   <option value="Feb">Feb</option>
</select>


$('#month').change(function () {
        var data = $(this).val();
        alert(data);
    });

但是当我更改下拉列表的值时,它不会调用更改事件,如下面的代码所示。

$("#month").val('Jan');

我在这里错过了什么吗?

标签: javascriptjquery

解决方案


更改事件仅在用户启动时触发,而不是在通过代码更改值时触发:

http://api.jquery.com/val/ 使用此方法(或使用本机 value 属性)设置值不会导致 change 事件的调度。因此,不会执行相关的事件处理程序。如果要执行它们,则应在设置值后调用 .trigger("change")。

在这些情况下,您需要手动触发事件,使用其中一个 .trigger("change")或等效的速记.change()

$('#month').change(function() {
  var data = $(this).val();
  console.log(data);
});

// change the select value, and trigger the change event:
$("#month").val('Feb').trigger("change");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="month" id="month">
  <option value="Jan">Jan</option>
  <option value="Feb">Feb</option>
</select>


推荐阅读