【问题标题】:jQueryUI Accordion with multiple forms具有多种形式的 jQueryUI 手风琴
【发布时间】:2015-01-28 14:15:38
【问题描述】:

我正在尝试构建一个包含多个“子形式”的手风琴。转到下一个面板后,我想在 oldPanel 中提交表单字段。最多可以有九个手风琴部分,因此最多可以有九个单独的 html 表单,每个表单中都有一个公制的输入字段。

当我第一次单击标题 1 到标题 2 时,它可以正常工作(无论如何都是脚本 - 仍然无法让表单的内容序列化)。当我从标题 2 单击回到 1 时,表单变成了一个空对象。在各个面板关闭后,如何在各个面板中提交表单?

JS

$(function () {
  $("#accordionSubmit").accordion({
    collapsible: true,
    beforeActivate: function (event, ui) {
        var tbl = $('#accordionSubmit').data('table');
        var form = $(ui.oldPanel).find('form'); //.serialize();

        $.ajax({
            type: "POST",
            url: "ajax.php",
            data: form,
            success: function (data) {
                $(ui.newPanel).html(data);
                console.log(form);

            },
            error: function (xhr, status, error) {
                //var err = eval("(" + xhr.responseText + ")");
                alert("Nope");
            }
        });
    }
  });
});

HTML

  <div id="accordionSubmit" class="accordionSubmit" data-table="jto-submit">
    <h3>Header Name 1</h3>

<div>
    <form name="form" id="a">
        <input type="hidden" id="stuff" value="YAY">
        <input type="hidden">
    </form>Contents</div>
    <h3>Header Name 2</h3>

<div>
    <form name="form" id="b">
        <input type="hidden" id="stuff1" value="YAY1">
        <input type="hidden">
    </form>
</div>

【问题讨论】:

  • 看来您走在了正确的轨道上。激活新面板时,您会收到一个包含旧面板和新面板标识的事件。鉴于您现在知道要关闭的面板,您可以提交其中包含的表单。我想我错过了你的核心谜题?
  • 我的问题是,在第一次更改面板后,无论我在面板之间进行了多少后续更改,我都会停止获取旧面板的身份。我不确定为什么我失去了关闭面板的价值,我不确定如何为每个单独的表单提交表单数据,不知道(从 JS 的角度来看)哪些表单会出现。

标签: jquery forms jquery-ui


【解决方案1】:

首先,您应该在表单字段中添加name 属性。序列化使用字段的name 而不是id

然后你可以像这样使用serializeArray()函数序列化表单:

var form = $(ui.oldPanel).find('form').serializeArray();

【讨论】:

  • 感谢名称属性片。但是,在第一次触发 beforeActivate 后,我仍然失去了价值。
  • 检查这个 Plunk,对我来说似乎工作正常:plnkr.co/edit/uJkiZN?p=preview
  • 你是对的!我发现是什么搞砸了对象:$(ui.newPanel).html(data); 一定是覆盖了对象,导致它返回空白。一旦我从 ajax 脚本中删除它,它就起作用了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
相关资源
最近更新 更多