2016-04-14 237 views
1

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

下拉列表填充每一个罚款,我的问题是当下拉列表只拉回一个结果时,它不允许我选择一个结果来填充下一个对应的下拉列表。

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

而且,这里是我的问题,

Issue with dropdownlists

enter image description here

回答

0

如果只有一个结果,然后trigger一个change你已经附加了后选项: -

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

    if (data.result.length == 1) { 
     dropDown.trigger('change'); 
    } 
    }); 
} 
+0

谢谢你,这个工程完美。 –

0

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

然而,如果你需要显示的是唯一的选择,还是填充下一个下拉列表中,我看到了两个不同的选项:(?否则为什么你点击一个条目 下拉)

  • 使用点击处理程序
  • 立即填入下一个下拉列表(毕竟,这是用户的唯一选择 反正)