【问题标题】:How can I include a form field in my POST if it is not in the current form?如果表单字段不在当前表单中,如何在我的 POST 中包含表单字段?
【发布时间】:2011-12-11 02:51:40
【问题描述】:

我有一个页面显示用户上传的照片。我有两种形式,提供两种不同的行动。第一个表单,replace_photo_form,只是用户按下以替换照片的按钮。第二个表单,next_page_form,是一个输入照片标题的字段,以及一个进入下一页的按钮。当用户按下 next_page 按钮时,它应该将标题保存到数据库并继续到下一页。

<body>
  <form id="replace_photo_form">
    <input type="text" name="caption" />
    <input type="submit" name="replace_photo" value="Replace Photo" />
  </form>

  <div>
    <p>This is where some other information is located</p>
  </div>

  <form id="next_page_form">
    <input type="submit" name="next_page" value="Next Page" />
  </form>
</body>

我希望标题字段直接出现在页面结构中的 replace_photo 按钮旁边,因此我将其包含在 replace_photo_form 中。问题是当我按下 next_page 按钮时,它不会像我想要的那样保存标题输入字段的 POST 值。理想情况下,我会在 next_page_form 中包含标题字段,以便将标题保存为 POST 值,但我需要它出现在替换照片按钮旁边。

如果表单字段不在当前表单中,如何在我的 POST 中包含表单字段?

【问题讨论】:

    标签: php html forms post


    【解决方案1】:

    将两个表单合并为一个跨越两个提交按钮的表单(当然它仍将包含输入)。

    然后,当提交表单时,您可以检查$_POST 中存在哪些值(next_pagereplace_photo),从而发现按下了哪个按钮以及您需要采取什么操作。

    即使禁用了 Javascript,该技术也能正常工作。如果你愿意放宽这个限制,还有很多其他的选择(例如,挂钩一个表单的submit 事件,将另一个表单的文本框的值复制到当前表单的隐藏字段中)。

    【讨论】:

      【解决方案2】:

      一种可能性是在字段中添加一个侦听器,将其值与第二种形式的隐藏字段联系起来:

      <form id="replace_photo_form">
          <input type="text" name="caption" 
              onchange="document.getElementById('next_page_form_caption').value = this.value;"/>
          ..
      </form
      
      <form id="next_page_form">
          <input type="hidden" id="next_page_form_caption" name="caption"/>
          ..
      </form>
      

      【讨论】:

        【解决方案3】:

        您的意思是replace_photo_form 在点击next_page 按钮之前提交,您可以简单地将onclick 添加到next_page 按钮,如下所示:

        &lt;input type="submit" name="next_page" value="Next Page" onclick="document.getElementById("replace_photo_form").submit();" /&gt;

        【讨论】:

          猜你喜欢
          • 2017-10-13
          • 2012-05-06
          • 2012-05-29
          • 1970-01-01
          • 2018-03-30
          • 1970-01-01
          • 2011-12-07
          • 2021-10-18
          相关资源
          最近更新 更多