我遇到了Jquery的问题:
<input type="hidden" id="is_subpage" value="FALSE" />
<input type="hidden" id="is_page" value="TRUE"/>
<input type="hidden" id="page_id" value="0"/>
<input type="hidden" id="page_domain" value="{tic}" />
<input type="hidden" id="sub_page_id" value="0"/>
<input type="submit" value="Save"/>
以上是Html View代码的一部分,其中page_id让我遇到麻烦。 在初始化时,它的值为0.
$.post("{t_url}", { selector : "load-content",id :dom },
function(data) {
$('#is_page').val('true');
$('#is_subpage').val('false');
$('$page_domain').val($('#page-list').text());
$('#editor').val('');
$('#page_id').val(data.user_template_id); // - Here is the problem
},'json');
当我更改listBox时执行上面的代码,我可以提醒data.user_template_id,那时我得到的值正确。但我不能将它应用于隐藏字段page_id。
我有什么问题?主要是它在2小时前运行良好,但我对系统nw进行了大量更改,但为什么我不能设置值???
提前致谢。
答案 0 :(得分:1)
这是因为在jQuery中,ajax调用是异步的。您正在尝试提醒page_id的值,而实际上它尚未设置。如果在设置之后将其准确地提醒它,您将看到它已正确设置。
如果要在回调函数之外的某处执行某些代码,可以将自定义事件绑定到它以检查数据是否已设置,例如:
$("#page_id").bind("valueSet", function () {
alert($(this).val());
}
在你的回调函数中,在你设置page_id值之后:
$("#page_id").trigger("valueSet");
答案 1 :(得分:0)
我解决了这个问题,只是替换了第一行。
$.post("{t_url}", { selector : "load-content",id :dom },
function(data) {
$('#page_id').val(data.user_template_id); // - Just added this line of code FIRST
$('#is_page').val('true');
$('#is_subpage').val('false');
$('$page_domain').val($('#page-list').text());
$('#editor').val('');
// $('#page_id').val(data.user_template_id); // - REmoved from here
},'json');