Hiddenfield值不更新 - Jquery

时间:2011-10-06 12:04:25

标签: jquery

我遇到了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进行了大量更改,但为什么我不能设置值???

提前致谢。

2 个答案:

答案 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');