我有各种.change jquery方法,以便使用来自另一个下拉列表的数据填充一个下拉列表;这工作正常。
现在,我无法在显式函数中使用.trigger(“change”)自动触发这些.changes。此显式函数应自动选择正确的下拉项,以便在第一个触发器的ajax完成后,下一个应该执行等。
function populate(id, block, chapter) {
$("#Chapters").val(chapter).trigger("change");
$("#Blocks").val(block).trigger("change");
$("#IDs").val(id);
}
以下是用于填充相应下拉列表的ajax驱动方法: (注意:我使用了async:false来尝试缓解我的等待问题;我发现这很可能不是解决方案,并且解决方案可能位于我上面显示的显式函数中的某处)
$('#Chapters').change(
function () {
var selectedVal = $(this).val();
$.ajax("/Library/GetBlocksByChapter", {
async: false,
data: { "chapterId": selectedVal },
type: "POST",
success:
function (data) {
$("#Blocks").empty().append("<option value='0'>--Select a Block--</option>");
$("#IDs").empty().append("<option value='0'>--Please Select a Block First--</option>");
$.each(data, function (index, value) {
$("#Blocks").append("<option class='form-control' value='" + value["dbid"] + "'>" + value["name"] + "</option>");
}
);
}
});
}
);
$('#Blocks').change(
function () {
var selectedVal = $(this).val();
$.ajax("/Library/GetIDsByBlock", {
async: false,
data: { "blockId": selectedVal },
type: "POST",
success:
function (data) {
$("#IDs").empty();
$.each(data, function (index, value) {
$("#IDs").append("<option class='form-control' value='" + value["dbid"] + "'>" + value["name"] + "</option>");
}
);
}
});
}
);
为了让事情更清楚:我有3个下拉列表,第一个填充第二个等等。 我在页面上有几个按钮,用于调用方法 populate(id,block,chapter)以自动选择下拉列表;其中id,block,chapter是通过ajax在下拉列表中填充的值。
非常感谢任何帮助/建议:)