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

答えからアイデアを得て、私はjQueryを使用してテーブルをトラバースし、順序を決定することになりました。実際に実装するときは、フォームの送信時に(テーブルをトラバースして)順序を決定します。

概念を示すjsfiddleは次のとおりです。

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

于 2012-04-17T16:01:03.630 に答える
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 に答える
-2

仕様上、フォームデータ内のフィールドの順番は不定です。実際には、テキストの順序になる傾向がありますが、特にクライアント側で順序が変更された場合、私はそれを当てにしません。

おそらく最良の方法は、フィールド名の配列を作成し、順序が変更されるたびに変更することです。クライアント側のスクリプトを使用せずにページを使用することが理にかなっている場合は、非表示のフィールドを含めて、フィールドをテキストの順序で格納し、フォーム データが送信されるときにその内容を配列のデータで動的に置き換えるのが最も安全です。 .

于 2012-04-13T16:05:08.927 に答える