3

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

4 回答 4

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>

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

于 2012-04-13T16:08:30.130 回答
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
}
于 2012-04-13T15:58:10.763 回答
0

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

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

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

于 2012-04-17T16:01:03.630 回答
-2

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

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

于 2012-04-13T16:05:08.927 回答