Javascript MVC Dropdownlist填充另一个Dropdownlist

Javascript MVC Dropdownlist填充另一个Dropdownlist,javascript,jquery,model-view-controller,drop-down-menu,Javascript,Jquery,Model View Controller,Drop Down Menu,在MVC中创建了一个包含2个输入字段和3个级联下拉列表的表单 dropdownlists填充每个结果都很好,我的问题是当dropdownlists只返回一个结果时,它不允许我选择一个结果来填充对应的下一个dropdownlist Jquery代码 var server = ""; function populateDropdown(dropdownId, requestPath, requestData, valueFunction, textFunction) {

在MVC中创建了一个包含2个输入字段和3个级联下拉列表的表单

dropdownlists填充每个结果都很好,我的问题是当dropdownlists只返回一个结果时,它不允许我选择一个结果来填充对应的下一个dropdownlist

Jquery代码

  var server = "";
    function populateDropdown(dropdownId, requestPath, requestData, valueFunction, textFunction) {
        var dropDown = $("#" + dropdownId);
        dropDown.val(null);
        dropDown.empty();
        $.getJSON(requestPath, requestData, function (data) {

            if (!data || !data.result)
                return;

            $.each(data.result, function (index, object) {
                dropDown.append($("<option />").val(valueFunction(object)).text(textFunction(object)));
            });
        });
    }

    $(document).ready(function () {
        $("#serverTextbox").blur(function () {
            var newServer = $.trim($(this).val());
            if (newServer === server)
                return;
            server = newServer;
            populateDropdown('usersCombo', 'LoadUsers', { server: server },
                function (object) { return object; },
                function (object) { return object; });
        });

        $("#usersCombo").change(function () {
            var user = $.trim($(this).val());
            populateDropdown('databaseCombo', 'LoadDatabases', { server: server, user: user },
                function (object) { return object; },
                function (object) { return object; });
        });

        $("#databaseCombo").change(function () {
            var database = $.trim($(this).val());
            populateDropdown('companyCombo', 'LoadCompanies', { server: server, database: database },
                function (object) { return object; },
                function (object) { return object; });
        });
    });
var-server=”“;
函数填充下拉列表(dropdownId、requestPath、requestData、valueFunction、textFunction){
变量下拉=$(“#”+下拉ID);
下拉列表.val(空);
dropDown.empty();
$.getJSON(请求路径、请求数据、函数(数据){
如果(!data | |!data.result)
返回;
$.each(data.result、函数(索引、对象){
追加($(“”).val(valueFunction(object)).text(textFunction(object));
});
});
}
$(文档).ready(函数(){
$(“#服务器文本框”).blur(函数(){
var newServer=$.trim($(this.val());
如果(新闻服务器===服务器)
返回;
服务器=新闻服务器;
populateDropdown('usersCombo','LoadUsers',{server:server},
函数(对象){返回对象;},
函数(对象){返回对象;});
});
$(“#usersCombo”).change(函数(){
var user=$.trim($(this.val());
populateDropdown('databaseCombo','LoadDatabases',{server:server,user:user},
函数(对象){返回对象;},
函数(对象){返回对象;});
});
$(“#数据库组合”).change(函数(){
var数据库=$.trim($(this.val());
populateDropdown('companyCombo','loadcompanys',{server:server,database:database},
函数(对象){返回对象;},
函数(对象){返回对象;});
});
});
还有我的问题,


如果只有一个结果,则在附加选项后,
触发
a
change
:-

函数填充下拉列表(下拉列表ID、请求路径、请求数据、valueFunction、textFunction){
变量下拉=$(“#”+下拉ID);
下拉列表.val(空);
dropDown.empty();
$.getJSON(请求路径、请求数据、函数(数据){
如果(!data | |!data.result)
返回;
$.each(data.result、函数(索引、对象){
追加($(“”).val(valueFunction(object)).text(textFunction(object));
});
if(data.result.length==1){
触发器('change');
}
});
}

如果只有一个结果,则在附加选项后,
触发
a
change
:-

函数填充下拉列表(下拉列表ID、请求路径、请求数据、valueFunction、textFunction){
变量下拉=$(“#”+下拉ID);
下拉列表.val(空);
dropDown.empty();
$.getJSON(请求路径、请求数据、函数(数据){
如果(!data | |!data.result)
返回;
$.each(data.result、函数(索引、对象){
追加($(“”).val(valueFunction(object)).text(textFunction(object));
});
if(data.result.length==1){
触发器('change');
}
});
}

当只有一个选项时,问题在于使用更改事件。为了允许用户更改值,您需要添加一个替代项,如空条目

但是,如果您需要仅显示该选项,并且仍然填充下一个下拉列表,我会看到两个不同的选项:

  • 使用单击处理程序(否则为什么要单击一个条目 下拉列表?)
  • 立即填充下一个下拉列表(毕竟,这是唯一的 用户的选项(无论如何)

当只有一个选项时,问题在于使用更改事件。为了允许用户更改值,您需要添加一个替代项,如空条目

但是,如果您需要仅显示该选项,并且仍然填充下一个下拉列表,我会看到两个不同的选项:

  • 使用单击处理程序(否则为什么要单击一个条目 下拉列表?)
  • 立即填充下一个下拉列表(毕竟,这是唯一的 用户的选项(无论如何)