2017-02-01 15 views
0

複数のフィールドに入力できるフォームがあります。フィールドの量は固定ではなく、ユーザーの入力に依存します。送信前に投稿データを結合する

簡略化された形式は:

<form method="POST" action="post.php"> 
    Field one: <input type="text" name="field[]" /><br /> 
    Field two: <input type="text" name="field[]" /><br /> 
    Field three: <input type="text" name="field[]" /><br /> 

    <br /><br /> 

    Checkbox one: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox two: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox three: <input type="checkbox" name="check[]" value="1" /><br /> 

    <br /><br /> 

    <input type="submit" value="Submit" /> 
</form> 

私が直面してる問題、field onetwotwoでというように、checkbox oneとペアにしなければならないということです。これは難しいとは言えませんよね?すべてがチェックされ、入力されている場合、そうではありません:PHPで

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

    [check] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => 1 
     ) 
) 

私は一緒に配列インデックスをリンクする可能性があり、すべてが順調です。私が直面している問題は、2番目のチェックボックスを選択しないときです。

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

    [check] => Array 
     (
      [0] => 1 
      [1] => 1 
     ) 
) 

この状況に対処するための最良の方法は何ですか:あなたはそれを行う場合は、以下check post data内の1つのエントリがあるでしょうか? Ajaxの送信はオプションではありませんが、JavaScriptの操作は可能です。

私は要素ごと(1、2、3)にJSで配列を作成し、そのデータを送信する方法を考えていました。問題は、私はそれをどうやってやるべきか、あるいはこの問題を扱う良い方法があるのか​​?

+0

多分チェックボックスのための隠しテキストフィールド。チェックボックスをオンにすると、非表示フィールドは値を取得し、そうでない場合は非表示フィールドが空になります。 – Eugen

答えて

1

あなたが一致するインデックスでそれらをペアリングし、それを定義する前に、チェックボックスのデフォルトの隠し入力を設定する必要があります。

Field one: <input type="text" name="field[0]" /><br /> 

       <input type="hidden" name="check[0]" value="0"> 
Checkbox one: <input type="checkbox" name="check[0]" value="1" /><br /> 

だから今、あなたは常にfield[0]と一致check[0]を持っていますが、それは価値があります0チェックされていない場合

+0

私は長い間これに取り組んできましたが、それは確かです...もちろん、インデックスを追加することが最良の解決策であり、うまくいくでしょう。私は自分でそれを考えなかったのです... – Mathlight

+0

そしてチェックボックスのためのちょっとしたトリックを考えてくれてありがとうございました。 – Mathlight

関連する問題