在MVC中创建了一个包含2个输入字段和3个级联下拉列表的表单。
下拉列表中每个人都填写正常,我的问题是当下拉列表仅撤回一个结果时,它不允许我选择一个结果来填充下一个对应的下拉列表。
Jquery Code,
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; });
});
});
这也是我的问题,
答案 0 :(得分: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');
}
});
}
答案 1 :(得分:0)
当只有一个选项时,问题是使用更改事件。为了允许用户更改值,您需要添加替代值,例如空条目。
但是,如果您需要显示该选项并仍然填充下一个下拉列表,我会看到两个不同的选项: