javascript - 从某些外部资源修改 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');
我在这里错过了什么吗?
解决方案
更改事件仅在用户启动时触发,而不是在通过代码更改值时触发:
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>
推荐阅读
- spring-cloud - 有没有办法防止 Spring Cloud Gateway 重新排序查询参数?
- javascript - 如何将这些过滤器按钮更改为下拉菜单?
- sql - tab_to_string [Error] 执行 (37: 13): ORA-06502: PL/SQL: numeric or value error: 字符串缓冲区太小
- python - Python:如何在 all() 中使用运算符?
- typescript - 正则表达式匹配降价标题但不匹配代码注释
- android - 在片段中使用 listview 并调用 dialer
- php - 添加 Nginx 配置文件并生成 let's encrypt using php
- mysql - MySQL - 快速查询但慢速存储过程
- python - 如何在 astropy.io.ascii.read 中指定单个列格式?
- javascript - 方便的“链式”|| (OR) 液体中的表达式