Jquery /ajax填充第二个下拉框并触发更改事件
jquery/ajax populate second dropdown and trigger change event
所以我设法填充了3个级联的下拉框。问题是,当一个下拉菜单被填充时:它的第一个选项不会作为一个改变的事件被触发。
$('#timesheet-type').change(function () {
var clients = $('#timesheet-client');
var projects = $('#timesheet-project');
if ($(this).val() == 'project') {
$.getJSON("timesheets/populateClients",
function (data) {
var model = clients;
model.empty();
$.each(data, function (index, element) {
model.append("<option value='" + element.id + "'>" + element.first_name + "</option>");
});
});
clients.prop('disabled', false);
clients.change();
} else {
clients.prop('disabled', true);
projects.prop('disabled', true);
}
});
$('#timesheet-client').change(function () {
$('#timesheet-project').prop('disabled', false);
$.getJSON("timesheets/populateProjects",
{ option: $(this).val() },
function (data) {
var model = $('#timesheet-project');
model.empty();
$.each(data, function (index, element) {
model.append("<option value='" + element.id + "'>" + element.name + "</option>");
});
});
});
因此,要使用第一个选项启动下一个下拉菜单,我需要切换两次。
使用:clients.change()
/* or */
clients.trigger('change');
启用组合框,但不填充。
参考答案https://stackoverflow.com/a/10547666
下面是针对您的情况修改的代码:
首先设置val(),然后触发()事件来手动触发它
下面是一个示例(http://jsfiddle.net/v7QWd/3/)
$('#timesheet-type')
.val('YOUR-OPTION-VALUE-HERE')
.trigger('change');
您仍然可以在每个列表的顶部有一个空选项(如果有必要),并从JavaScript代码自动设置值(选定项)为实际选项。
相关文章:
- 从控制器返回后Ajax启动事件激发
- node.js请求数据事件未在CORS ajax调用中触发
- jquery/ajax无限滚动事件
- 在Javascript中的ajax响应之后未调用Dropdown事件
- 处理第三方库发送的ajax请求的开始和结束事件
- jQuery Ajax.ajaxSuccess()事件未激发
- 单击事件中的ajax请求后重定向
- Backbone fetch中的Ajax在fetch调用退出后完成,因此fetch调用中没有成功/失败事件
- 点击事件在谷歌地图和AJAX
- 延迟单击事件,直到AJAX完成
- 如何将事件绑定到从AJAX请求注入的HTML
- 挂钩到Rails内置远程:true'ajax:成功'事件
- 在按钮'上运行PHP代码;s onclick事件,或者使用Ajax
- 事件函数完整日历中的多个ajax调用
- 事件不适用于通过Ajax推杆的元素
- 没有为Ajax添加的新元素注册Jquery事件
- 为什么我的Jquery.ajax调用会触发错误事件
- Ajax 请求正在取消页面上的其他 JS 事件
- 调用按钮单击事件 ajax 加载的用户控件
- 当使用ajax将参数传递到onClick事件(ajax在同一页面上)的函数时,我是否得到html和javascript代