【问题标题】:One form on several pages on jquery mobilejquery mobile上多个页面上的一个表单
【发布时间】:2012-09-11 15:10:19
【问题描述】:

我正在尝试提交一个较长的表单,该表单分布在多个“页面”中,并且“提交”按钮不发送表单。

<div data-role="page">
    <form action="save_data.php">
    <input type="text">
    <a href="#two">next</a>
</div>
<div data-role="page" id="#two">
    <input type="text">         
    <input type="text">
    <a href="#three">next</a>
</div>
<div data-role="page" id="#three">
    <input type="text">         
    <input type="submit">
</div>

如果我将&lt;form action="save_data.php"&gt; 放在与提交相同的页面中,它会发送数据,否则什么也不会发生。

我只能在同一个“页面”内发送表单,即使它们实际上都是同一个文件?

谢谢

【问题讨论】:

  • 我找到了这个答案,stackoverflow.com/questions/8036588/…,但我可以想到其他方法来完成这项工作。
  • 您使用的是单页模板还是多页模板?
  • 和上面的例子一样,同一个 hmtl 文件中有几个页面。

标签: javascript jquery forms jquery-mobile


【解决方案1】:

对于除最后一个表单页面之外的所有页面,请执行以下操作:

var $lastPageForm = $('.last-page').find('form');
$('.not-last-page').find('form').on('submit', function () {
    $.each($(this).find('input'), function () {
        $lastPageForm.append($(this).clone());
    });
    return false;
});

这将克隆第一个表单中的每个 input 并将这些克隆附加到最后一个表单。这样,所有表单的所有输入都会在最后一页同时提交。

此代码需要一个多页模板,布局如下:

<div class="not-last-page" data-role="page">
    <form>
        <input type="text">
        <a href="#two">next</a>
    </form>
</div>
<div class="not-last-page" data-role="page" id="two">
    <form>
        <input type="text">
        <a href="#three">next</a>
    </form>
</div>
<div class="last-page" data-role="page" id="three">
    <form action="save_data.php">
        <input type="text">
        <input type="submit" />
    </form>
</div>

【讨论】:

  • 这是一个聪明的方法,我解决它的方法只是获取所有输入并通过 ajax 将它们发送到表单操作指向的页面。
  • 只是好奇,为什么不在最后一个表单中添加一个 id 并使用 var $lastPageForm = $('#lastformid') 而不是 var $lastPageForm = $('.last-page')。查找('表格');
  • @RayS。在 OP 的代码中,伪页面已经有 ID,我不想更改它们,但仍然想展示我的想法。简短版:没有真正的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 2017-05-18
相关资源
最近更新 更多