【问题标题】:Tell the order of fields submitted from a form告诉表单提交的字段顺序
【发布时间】:2012-04-13 15:54:24
【问题描述】:

我有一个表单,它允许用户将输入(使用 jQuery)移动到他们想要的任何顺序。对于下面的表单,用户可能希望“fieldD”后跟“fieldA”、“fieldB”、“fieldC”。

示例形式:

<form id="myForm" method="post">  
  <input type="submit">
  <table>
       <tr><td><input type="text" name="fieldA"></td></tr>
       <tr><td><input type="text" name="fieldB"></td></tr>
       <tr><td><input type="text" name="fieldC"></td></tr>
       <tr><td><input type="text" name="fieldD"></td></tr> 
  </table>  
</form>

捕捉用户在提交表单时选择的顺序的最佳方式是什么?

【问题讨论】:

  • 这些答案有帮助吗?
  • 你使用什么服务器端语言?
  • @iambriansreed Classic ASP 是服务器端语言

标签: html forms submit


【解决方案1】:

过去我做过以下事情:

<form id="myForm" method="post">  
  <input type="submit">
  <table>
       <tr><td><input type="text" name="fieldA"></td></tr>
       <tr><td><input type="text" name="fieldB"></td></tr>
       <tr><td><input type="text" name="fieldC"></td></tr>
       <tr><td><input type="text" name="fieldD"></td></tr> 
  </table>  
  <input type="hidden" name="fields" value="fieldA,fieldB,fieldC,fieldD" />
</form>

即,添加了一个隐藏字段,其字段名称以正确的顺序排列。

【讨论】:

    【解决方案2】:

    您可以将这些输入值存储在一个数组中并对字段名称进行编号:

    <form id="myForm" method="post">  
        <input type="submit">
        <input type="text" name="field[1]" />
        <input type="text" name="field[2]" />
        <input type="text" name="field[3]" />
        <input type="text" name="field[4]" />
    </form>
    

    每次完成排序操作后,字段名称都需要重写。

    // this will result in a PHP-array, e.g.
    $_POST['field'][0]
    
    foreach( $_POST['field'] as $indexAsSetViaJs => $fieldValue ) {
        // process values in desired order
    }
    

    【讨论】:

    • @Sebi2020 这个概念也适用于其他服务器端语言……
    【解决方案3】:

    从答案中汲取灵感,我最终使用 jQuery 遍历我的表以确定排序。当我实际实现它时,我会在提交表单时确定排序(通过遍历我的表)。

    这是一个演示该概念的 jsfiddle:

    http://jsfiddle.net/kq8tT/6/

    【讨论】:

      【解决方案4】:

      根据规范,表单数据中字段的顺序是未定义的。实际上,它往往是文本顺序,但特别是如果在客户端更改顺序,我不会指望它。

      最好的方法可能是创建一个字段名称数组,并在更改顺序时对其进行修改。如果在没有客户端脚本的情况下使用页面是有意义的,那么最安全的做法是包含一个隐藏字段,以文本顺序包含字段,并在提交表单数据时用数组中的数据动态替换其内容.

      【讨论】:

      • 我否决了这个答案,因为它实际上是不正确的。 HTML 规范规定 POST 请求正文中键/值对的顺序必须与字段在 HTML 文档中出现的顺序相同。请参阅此答案,其中引用了 HTML4.01:stackoverflow.com/a/3712617/159145 - 而 HTML5 的规范(截至 2019 年 12 月)规定值必须采用“树顺序”,这是 HTML4.01 定义的更严格版本(dev.w3.org/html5/spec-LC/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多