Jquery Ajax填充一个下拉列表,当上一个下拉列表不可用时触发该下拉列表';t更改,但选择了一个选项

Jquery Ajax填充一个下拉列表,当上一个下拉列表不可用时触发该下拉列表';t更改,但选择了一个选项,jquery,ajax,drop-down-menu,Jquery,Ajax,Drop Down Menu,我有3个下拉列表:第一个是从服务器填充的,第二个是基于第一个的更改通过ajax填充的,第三个也是基于第二个的更改通过ajax填充的 这是第二个或第三个下拉式ajax的代码: $("select[name='myId']").change(function() { $.ajax({ type: "POST", url: "ajax/getList", data: "id="+$("select[name='myId']").val(), dataType: 'jso

我有3个下拉列表:第一个是从服务器填充的,第二个是基于第一个的更改通过ajax填充的,第三个也是基于第二个的更改通过ajax填充的

这是第二个或第三个下拉式ajax的代码:

$("select[name='myId']").change(function() {
$.ajax({
    type: "POST",
    url: "ajax/getList",
    data: "id="+$("select[name='myId']").val(),
    dataType: 'json',
    success: function(data){
        $("select[name='nextId']").empty();
        $.each(data, function() { //Filling each option
            if(this.isSelected == 1) $("select[name='nextId']").append($("<option />").val(this.id).text(this.name).attr("selected","selected"));
            else $("select[name='nextId']").append($("<option />").val(this.id).text(this.name));
        });
    }
});
});
$("select[name='myId']").change();
$(“选择[name='myId'])。更改(函数(){
$.ajax({
类型:“POST”,
url:“ajax/getList”,
数据:“id=”+$(“选择[name='myId']”)val(),
数据类型:“json”,
成功:功能(数据){
$(“选择[name='nextId'])。空();
$.each(数据,函数(){//填充每个选项
if(this.isSelected==1)$(“select[name='nextId']).append($(“”).val(this.id).text(this.name).attr(“selected”,“selected”);
else$(“选择[name='nextId'])。追加($(“”).val(this.id).text(this.name));
});
}
});
});
$(“选择[name='myId']);
如您所见,我传递了一个“isSelected”参数,该参数预先选择了用户在上一次提交表单时选择的值。问题是,当下拉列表预先填充时,它不会触发更改事件,因此下一个下拉列表根本不会通过ajax填充

如果上一个下拉列表值发生更改(与当前一样),但如果上一个下拉列表不是空的并且选择了一个值,并且要填充的当前下拉列表是空的,那么如何触发ajax


谢谢

尝试将其添加到success函数中,就在
$之后。each()


这假设第三个下拉菜单名为nextNextId。

我猜
myId
是第一个下拉菜单,
nextId
是第二个下拉菜单,并且您有一个事件处理程序连接到
nextId
,它填充了第三个下拉菜单?是的,我应该解释一下:每个下拉列表都有相同的代码,除了用更改的下拉列表替换myId,用必须填充的下拉列表替换nextId。因此,相同的代码会出现两次,第一个下拉列表更改时,第二个下拉列表更改时。一旦我解决了所有的问题,这将成为未来的一个功能。
if ( $("select[name='nextId'] option:selected").length ) {
    // an option is pre-selected
    // check if third dropdown is empty
    if ( $("select[name='nextNextId'] option").length == 0 ) {
        // third dropdown is empty
        // populate it by triggering change handler on second dropdown
        $("select[name='nextId']").change();
    }
}