0

我有 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();

如您所见,我传递了一个“isSelected”参数,该参数预先选择了用户在之前提交的表单中选择的值。问题是,当预填充下拉列表时,它不会触发更改事件,因此下一个下拉列表根本不会通过 ajax 填充。

如果先前的下拉列表值发生更改(如当前所做的那样),但如果先前的下拉列表不为空并且选择了一个值,并且当前要填充的下拉列表为空,我如何触发我的 ajax?

谢谢!

4

1 回答 1

0

尝试在成功函数中添加它,就在$.each()

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();
    }
}

这假设第三个下拉列表称为 nextNextId。

于 2013-03-31T21:03:02.983 回答