【问题标题】:JQuery Ajax Form and Dynamically created form elements not submittingJQuery Ajax 表单和动态创建的表单元素未提交
【发布时间】:2009-12-14 01:38:26
【问题描述】:

I'm writing a form that has some text input elements loaded dynamically when a select list is changed.

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

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

代码是这样的:

$("#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"/>

如果我在调用 ajax 方法后使用 firebug 查看页面,动态加载的 html 就在它应该在的层次结构中......即它在表格中。

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

有什么想法吗?

【问题讨论】:

    标签: jquery ajax jquery-forms-plugin


    【解决方案1】:

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

    【讨论】:

    • @Mike:还应该如何提交输入?这就是 POST 变量中显示的 name...这就是您访问它们的方式。
    【解决方案2】:

    这很简单,只需将表单元素附加到body标签并将其样式设置为'display:none'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多