告诉从表单提交的字段的顺序

时间:2012-04-13 15:54:24

标签: html forms submit

我有一个表单,允许用户将输入(使用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>

捕获用户提交表单时所选择的顺序的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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 :(得分:0)

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

<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
}

答案 3 :(得分:0)

从答案中获取想法,我最终使用jQuery遍历我的表来确定排序。当我实际实现它时,我将在提交表单时确定排序(通过遍历我的表)。

这是一个展示这个概念的jsfiddle:

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