2009-12-14 86 views
4

我正在编写一个表单,其中有一些文本输入元素在选择列表更改时动态加载。JQuery Ajax表单和动态创建的表单元素不提交

问题是,当我提交表单时,这些元素不会发送到发布到服务器的数据中。

我需要做些什么才能将这些动态创建的元素“纳入”要提交的表单中?

的代码是这样的:

$("#my_select_id").change(function() { 
    $.ajax({ 
     type: "GET", 
     url: "some-url/" + $("#played_number_game_id").children("option:selected").val(), 
     async: false, 
     dataType: "html", 
     error: function(XMLHttpRequest, status, errorThrown) { 
      alert("oh no!"); 
      alert(status); 
     }, 
     success: function (data, status) { 
      $("#parent-element").html(""); 
      $("#parent-element").append(data); 
     }, 
     complete: function() { 
     } 
    }); 

    $("#my_form_submit").click(function() { 
     $("#my-form").ajaxSubmit({ clearForm: true }); 
     return false; 
    }); 
}); 

由AJAX调用返回的HTML是:

<input id="my-form_e_1" class="number-input" type="text"/> 
<input id="my-form_e_2" class="number-input" type="text"/> 

如果我使用Firebug看网页调用Ajax的方法后动态加载的html在它应该是的层次中是正确的...即它的形式。

但是,当我点击提交按钮时,只有ajax调用之前存在的表单元素才会发布。

任何想法?

回答

5

你的问题似乎是动态添加的输入元素没有name属性。如果您希望将它们的值包含在提交的数据中,则输入元素需要name属性。

+0

@Mike:被输入应该怎么回事提交?这是在POST vars中显示的*名称*,这就是您访问它们的方式。 – mpen

0

这很简单,只要表单元素附加到body标签并设置其风格为“显示:无”