2011-07-15 18 views
0

私は動的に生成されたチェックボックスのセットと各チェックボックスのテキストエリア入力を持っています。テキストボックスの値をPOSTのチェックボックスのみで送信したいと思います。これはどのように可能ですか?POST固有のテキストフィールド

チェックボックスとテキストエリアの両方に別々の配列を送信できますが、チェックボックスにはチェックされた項目の値しか格納されないため、どのテキストエリアがどのチェックボックスに表示されるかを知ることは非常に困難です。

+0

ほとんどのブラウザ*要素。チェックボックスに基づいてテキストエリアを動的に有効/無効にすることを試してください。これが*すべての*ブラウザタイプで動作するかどうかはわかりません。 – mikey

答えて

1

実際には難しいことではありません:今

foreach($inputs as $key => $value) 
{ 
    ?> 
    <input type="checkbox" name="cb[<?php echo $key ?>]" /> 
    <input type="text" name="tf[<?php echo $key ?>]" value="<?php echo $value ?>" /> 
    <?php 
} 

、POSTの受信機に:*障害者のための値を送信していない私がテストしてみた

foreach($_POST[ 'cb' ] as $key => $value) 
{ 
    // this is the value of a textfield which has a corresponding cb checked, 
    $text = $_POST[ 'tb' ][ $key ]; 
} 
+0

私はそれがそうであると思ったよりずっと簡単です! – Abdulla

0

提出する前に、選択されたチェックボックスに従ってJavascriptを使用してsubmitイベントを処理し、不要なテキストエリアをDOMから削除することができます。

0

ユーザーが[送信]をクリックしたときに望ましくないテキストエリアを削除するなど、何かをJavascriptで実行することもできますが、これは単純な方法で行うのは面倒です。入力の検証と処理にJavascriptを使用しないことをお勧めします。

私の意見では、PHPでPOST配列を処理する方がよいでしょう。問題は、チェックボックスの名前が正しくないため、テキストエリアと一致させることができないということです。それに対する解決策は、より簡単な命名方式を考え出すことです。

0

これはできません。私はあなたがしようとしているのは、対応するチェックボックスを持つテキストエリアだけを処理することだと思います。これを行う簡単な方法は、チェックボックスにテキストボックスの名前を付けて、配列が作成されるようにすることです。ここでインデックスはそれらをtogethorに結びつけます。例えば

:[「確認」]要素が設定されている場合は、

<textarea name="boxes[0][text]"></textarea><input type="checkbox" name="boxes[0][checked]"> 
<textarea name="boxes[1][text]"></textarea><input type="checkbox" name="boxes[1][checked]"> 

あなたはif句で、配列をPOSTの必要なデータが、foreachを処理します。

+0

あなたはDOMツリーから実際のボックスを削除するようなことをすることができますが、そのことはブラウザやブラウザ間で確実に機能します。それに加えて、クライアント側のスクリプトも含めて、依存関係を導入しない限り、それを導入しないことをお勧めします。 – Josh