【发布时间】:2021-02-04 16:07:10
【问题描述】:
所以我设法填充了 3 个级联下拉框。 但问题是当填充一个下拉列表时:它的第一个选项不会作为更改的事件触发。
以下是 2 个更改的示例:
$('#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');
启用组合框,但不填充。
【问题讨论】:
-
不介意不使用ajax吗?
-
也许您可以添加一个 empty 选项作为每个列表中的第一项?然后选择下一个项目(第一个“真实”选项)会很容易:)
-
@ejay_francisco:不幸的是没有别的办法。
-
@Doku-so:我想到了这一点,但事实是我喜欢用尽可能少的点击进行导航。
标签: javascript jquery ajax json