以下是我正确填充选择列表的内容:
<select id="countriesList">
<option value="0"> -- select country -- </option>
<option value="500"> 500 </option>
</select>
<script type="text/javascript">
$(function () {
// load the countries list
$.getJSON(
"/StaticData/GetAllCountries/",
function (countries) {
// iterate each returned country and add it to the countries select list.
$.each(countries, function (i, country) {
$("#countriesList").append("<option value='" + country.Id + "'>" + country.Description + "</option>");
});
});
// set the selected country based on the model's delivered CountryId value
$('#countriesList').val(500);
});
</script>
填充效果很好,但是在脚本添加的其中一个选项元素上调用.val()并没有选中它,但作为一个例子,静态定义的选项“500”在我调用.val时工作正常( )就此而言。
我对jquery很新,但不是编程,因为我进入了浏览器编程。任何提示都会有用。你还需要什么?
此脚本代码直接位于表td标记内,因此填充了select并在表单呈现时进行设置。
答案 0 :(得分:3)
尝试手动完成。
var select = document.getElementBydId("countriesList");
for (var i = 0; i < select.options.length; i++) {
if (select.options[i].value === "500") {
select.selectedIndex = i;
}
}
等待。问题是你在执行AJAX时是异步并且有回调
所以执行顺序是:
所以将$("#countriesList").val(500)
添加到回调函数的末尾
答案 1 :(得分:1)
如果您尝试从示例.val(500)
的同一位置选择它,那么您将永远无法获得有效的结果。 AJAX调用是异步进行的,并在.val(500)
已经执行后填充信息。
在ajax调用的return函数中移动你的select,它应该可以正常工作。
答案 2 :(得分:0)
您可能需要使用livequery插件...