使用AJAX构建选择选项后,选择项目时出现问题



我使用这个javascript来选择一个特定的选项(选项值在隐藏元素中指定(:

$("select").each(function() {
var id = $(this).attr('id');
var source = 'input:hidden[name=select_'+id+']';
if ($(source).length) {
var selected = $(source).val();
$(this).val(selected).change();
}
});

当选项在HTML源代码中进行硬编码时,这种方法可以很好地工作。

我现在需要用AJAX调用填充选项,我使用以下方法:

select : function(ctrl,id) {
var call = '/'+ctrl+'/'+$("#auth input[name=verify]").val();
$.getJSON(call, function(result) {
$.each(result, function() {
$('#'+id).append($("<option />").val(this.id).text(this.title));
});
});
},

我在页面加载时处理select方法(AJAX(,选项填充得很好。但当我尝试选择所需的选项时,浏览器默认为第一个选项。

我通过在代码周围粘贴一些警报来测试正在发生的事情,如下所示:

alert($(this).val(selected));       // A
alert($(this).val());               // B
$(this).val(selected).change();
alert($(this).val());               // C

当选项被硬编码时,我得到A=3,B=null,C=3,即它有效当通过AJAX填充选项时,我得到A=3,B=null,C=null,即失败

我猜在用AJAX填充选项列表之后,我需要触发某种change((事件。我试过(我知道有点过头了(:

$('#'+id).append($("<option />").val(this.id).text(this.title).change());

&

$('#'+id).append($("<option />").val(this.id).text(this.title)).change();

有什么想法吗?Thx

问题已解决。

尽管我按正确的顺序(理论上(触发了代码,但由于javascript事件驱动的行为,AJAX调用直到我的选择初始化完成后才完成。因此,我将代码移动到AJAX调用中,将所选选项设置为voila。

select : function(ctrl,id) {
var call = '/'+ctrl+'/'+$("#auth input[name=verify]").val();
$.getJSON(call, function(result) {
$.each(result, function() {
$('#'+id).append($("<option />").val(this.id).text(this.title));
});
var source = 'input:hidden[name=select_'+id+']';
if ($(source).length) {
var selected = $(source).val();
$('#'+id).val(selected).change();
}
});

最新更新