JQuery Ajax 表单和动态创建的表单元素未提交

发布于 2024-08-14 19:06:31 字数 1154 浏览 4 评论 0原文

我正在编写一个表单,当选择列表更改时,会动态加载一些文本输入元素。

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

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

代码是这样的:

$("#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 调用之前存在的表单元素。

有什么想法吗?

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

The problem is that when I submit the form those elements are not sent in the data that is posted to the server.

What do I need to do to get those dynamically created elements "into" the form to be submitted?

The code is something like this:

$("#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;
    });
});

The html returned by the ajax call is:

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

And if I use firebug to look at the page after calling the ajax method the dynamically loaded html is right in the hierarchy where it should be...i.e. it's in the form.

But when I click the submit button only the elements of the form that existed before the ajax call get posted.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

芯好空 2024-08-21 19:06:31

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

Your problem seems to be that the dynamically added input elements do not have name attributes. Input elements require name attributes if you want their values to be included in the submitted data.

当梦初醒 2024-08-21 19:06:31

非常简单,只需将 form 元素附加到 body 标记并将其样式设置为 'display:none'

It's pretty simple, just append the form element to the body tag and set its style to 'display:none'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文