Selectpicker 已选择第一个选项,但 selectpicker 标题为 "Nothing selected"
Selectpicker first option selected but selectpicker title is "Nothing selected"
我正在使用 Bootstrap 的 select 选择器插件。当 CountryList 发生变化时,我动态地 select 数据库中该国家/地区的现有城市并将数据传输到 CityList。但是,即使第一个选项是 selected,selectpicker 的 header 什么也没说 selected。如果 selected 国家/地区的数据库中有 1 个城市,即使单击该城市,selected 也不会发生任何变化。实际上,我可以得到 city coming selected 的值,但它什么也没说 selected。我该如何解决这个问题?
选择器 SS:
响应SS:
非常感谢您的回答。
CountryList change function
$("#CountryList").change(function() {
var countryId = $('#CountryList option:selected').val();
$.ajax({
type: "POST",
url: "@Url.Action("GetCities", "Project")",
data: { countryId: countryId },
dataType: "text",
success:
function(response) {
var parsedResponse = jQuery.parseJSON(response);
console.log(parsedResponse);
var option = "";
for (var i = 0; i < parsedResponse['cityList'].length; i++) {
if (i == 0) {
var city = parsedResponse['cityList'][i].text;
var cityId = parsedResponse['cityList'][i].value;
option += `<option selected value="${cityId}">${city}</option>`;
} else {
var city = parsedResponse['cityList'][i].text;
var cityId = parsedResponse['cityList'][i].value;
option += `<option value="${cityId}">${city}</option>`;
}
}
$("#CityList").html(option);
$("#CityList").selectpicker('refresh');
}
});
});
Project Controller GetCities Action
[HttpPost]
public async Task<JsonResult> GetCities(int countryId)
{
var model = new AddProductViewModel();
var cityList = await _cityService.GetAllAsyncByCountryId(countryId);
model.CityList = new SelectList(cityList, "Id", "Name");
var firstCity = cityList.First();
model.CountryDefaults = await _countryDefaultService.GetAllAsyncByCountryCityId(countryId, firstCity.Id);
model.CountryDefault = _countryDefaultService.GetByCountryCityId(countryId, firstCity.Id);
JsonConvert.SerializeObject(model);
return Json(model);
}
首先我们需要在下拉列表中添加选项并刷新 select 选择器,现在我们必须动态 select 第一个选项并再次刷新 select 选择器。这就是 selectpicker 的工作原理。
检查下面的代码
var option = "";
for (var i = 0; i < parsedResponse['cityList'].length; i++) {
var city = parsedResponse['cityList'][i].text;
var cityId = parsedResponse['cityList'][i].value;
option += `<option value="${cityId}">${city}</option>`;
}
$("#CityList").html(option);
$("#CityList").selectpicker('refresh');
$("#CityList").val($('#CityList option:first').val());
$("#CityList").selectpicker('refresh');
我正在使用 Bootstrap 的 select 选择器插件。当 CountryList 发生变化时,我动态地 select 数据库中该国家/地区的现有城市并将数据传输到 CityList。但是,即使第一个选项是 selected,selectpicker 的 header 什么也没说 selected。如果 selected 国家/地区的数据库中有 1 个城市,即使单击该城市,selected 也不会发生任何变化。实际上,我可以得到 city coming selected 的值,但它什么也没说 selected。我该如何解决这个问题?
选择器 SS:
响应SS:
非常感谢您的回答。
CountryList change function
$("#CountryList").change(function() {
var countryId = $('#CountryList option:selected').val();
$.ajax({
type: "POST",
url: "@Url.Action("GetCities", "Project")",
data: { countryId: countryId },
dataType: "text",
success:
function(response) {
var parsedResponse = jQuery.parseJSON(response);
console.log(parsedResponse);
var option = "";
for (var i = 0; i < parsedResponse['cityList'].length; i++) {
if (i == 0) {
var city = parsedResponse['cityList'][i].text;
var cityId = parsedResponse['cityList'][i].value;
option += `<option selected value="${cityId}">${city}</option>`;
} else {
var city = parsedResponse['cityList'][i].text;
var cityId = parsedResponse['cityList'][i].value;
option += `<option value="${cityId}">${city}</option>`;
}
}
$("#CityList").html(option);
$("#CityList").selectpicker('refresh');
}
});
});
Project Controller GetCities Action
[HttpPost]
public async Task<JsonResult> GetCities(int countryId)
{
var model = new AddProductViewModel();
var cityList = await _cityService.GetAllAsyncByCountryId(countryId);
model.CityList = new SelectList(cityList, "Id", "Name");
var firstCity = cityList.First();
model.CountryDefaults = await _countryDefaultService.GetAllAsyncByCountryCityId(countryId, firstCity.Id);
model.CountryDefault = _countryDefaultService.GetByCountryCityId(countryId, firstCity.Id);
JsonConvert.SerializeObject(model);
return Json(model);
}
首先我们需要在下拉列表中添加选项并刷新 select 选择器,现在我们必须动态 select 第一个选项并再次刷新 select 选择器。这就是 selectpicker 的工作原理。
检查下面的代码
var option = "";
for (var i = 0; i < parsedResponse['cityList'].length; i++) {
var city = parsedResponse['cityList'][i].text;
var cityId = parsedResponse['cityList'][i].value;
option += `<option value="${cityId}">${city}</option>`;
}
$("#CityList").html(option);
$("#CityList").selectpicker('refresh');
$("#CityList").val($('#CityList option:first').val());
$("#CityList").selectpicker('refresh');