jQuery .val()无法处理用.html()添加的隐藏字段

时间:2015-11-26 18:24:46

标签: javascript jquery html

我有一个加载文档主要部分的html表单,后加载ajax请求并获取一个xml文件,该文件被解析出来以创建可以更新/提交的“子”表单。这是'preload'形式

<html>
   <head>
    <script src="jquery.js">
    <script src="jquery.forms.js">
    <script>
      $(document).ready(function () {
      //Script to execute when form is loaded       
      loadOrder(unid);
      });
    </script>
   </head>
   <body>
     <form id="mainform" name="main" method="post" action="whatever">
       <input type="hidden" id="unid" name="unid" value="123" />        
     </form>
     <div id="orderForms">    
     </div>
   </body>
</html>

这是表格后载:

<html>...
    <div id="orderForms"> 
       <form id="order_1" name="order" method="post" action="whatever">
         <input type="hidden" id="pid_1" name="pid" value="123" />
         <input type="hidden" id="unid_1" name="unid" value="456" />
       </form>
       <form id="order_2" name="order" method="post" action="whatever">
         <input type="hidden" id="pid_2" name="pid" value="123" />
         <input type="hidden" id="unid_2" name="unid" value="789" />
       </form>
   </div>
  </body>
</html>

JS代码:

function loadOrders(unid){
   var rUrl = "url";
   $.ajax({type: "GET", url: rUrl, async: true, cache: false, dataType: "xml", success: postLoadOrders}) ;
}

function postLoadOrders(xml){
   nxtOrder = 1;
   var html="";
   $('order',xml).each(function() {
  //  parses the xml and generates the html to be inserted into the <div>
   });  
   $("#orderForms").html(html);
}

这一切都有效,主要表单加载,<div>中的'隐藏'表单都被写入。当我在主表单上放一个按钮时会出现问题......

function submitOrder(){
   $("#pid_1").val('555');
   $("#order_1").formSerialize();
   $("#order_1").ajaxSubmit();
}

如果我在.val('555')之前警告($(“#pid_1”)。val())它会显示原始值,当我提醒时,它会显示新值,但它会提交原始值,如果我在firebug中打开html,则值不会显示为更改。

如果我将一个隐藏字段放入主窗体中,当文档加载并更改其值时存在,不仅新值发布,它还会在检查源时显示为已更改。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

$('order',xml).each(function() {
}); 

这不是JQuery中的Object

您可以修改:

$('[name=order]',xml).each(function() {
});
相关问题