我有以下脚本:
$(document).ready(function () {
$("#dpProject").change(function () {
var idModel = $(this).val();
var select = $("#dpYear");
select.empty();
$.getJSON("/Project/GetYearsOfProject", { projectId: idModel }, function (mahaleData) {
var select = $("#dpYear");
select.empty();
$.each(mahaleData, function (index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});//each
});//json
alert($('#dpYear :selected').html());
});
为什么当我想提醒dpYear的所选项时它会提醒null? 即使我改为text(),它也返回null。 我使用了jquery-1.7.1.js。
修改 我有2个dropdonwns和一个文本框,当Dp1(dpProject)改变Dp2(DpYear)必须重新加载并且Dp2中的第一个项目被默认选中,并且在加载Dp2之后,一些方法必须调用并填充文本框,所以使用changin Dp1,text依赖于第一项Dp2 texbox必须更改,但选择的Dp2项目(dpYear)返回null。
答案 0 :(得分:4)
getJSON
是异步的。在你清空你的选择之后,它会在被叫之后立即返回。这意味着在调用警报时它仍然是空的。
如何访问所选值取决于您想要的 :在ajax请求完成后,根据您的代码,将没有选定的值。如果需要,您可以选择默认选择一个(如果列表非空并且您没有明确选择一个,AFAIK将默认选择第一个。)
更新:既然如此,在重新填充选择之后访问select的值似乎是要走的路:
$.getJSON("/Project/GetYearsOfProject", { projectId: idModel }, function (mahaleData) {
var select = $("#dpYear");
select.empty();
$.each(mahaleData, function (index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});//each
alert($('#dpYear').val()); # If mahaleData is non-empty, this should be non-null
});//json
答案 1 :(得分:0)
我必须使用隐藏字段,在更改第一个Dp时,我必须将所选值设置为隐藏字段,我不知道为什么但是在第一次调用时,由val()返回的始终选择值为空。