2

私は PHP と Javascript が初めてで、5 つのチェックボックスを持つフォームと 5 つのラジオボタンを持つフォームの 2 つのフォームを持つ Web サイトを開始したばかりです。選択したラジオボタンを変更すると、ページが更新され、新しい値が使用されます。チェックボックスも同様です。残念ながら、フォームの 1 つを変更してから別のフォームを変更すると、最初のフォームの値はなくなります。

コードは次のとおりです。

<form name='form2' method='post'>
           <input type="radio" name="group1" value="all" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == null || $_REQUEST['group1'] == "all"){ echo "checked='checked'";}?>/> All<br>
           <input type="radio" name="group1" value="Example" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "Example"){ echo "checked='checked'";}?>/> Example<br>
           <input type="radio" name="group1" value="clifton" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "clifton"){ echo "checked='checked'";}?>/> Clifton<br/>
           <input type="radio" name="group1" value="fruita" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "fruita"){ echo "checked='checked'";}?>/> Fruita<br/>
           <input type="radio" name="group1" value="loma" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "loma"){ echo "checked='checked'";}?>/> Loma<br/>
       </form>


       <form name='form3' method='post'>
           <input type="checkbox" name="option1" value="smoking" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option1'])){ echo "checked='checked'";} ?>/> No Smoking<br>
           <input type="checkbox" name="option2" value="kids" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option2'])){ echo "checked='checked'";} ?>/>Good for Kids<br>
           <input type="checkbox" name="option3" value="wheelchair" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option3'])){ echo "checked='checked'";} ?>/>Wheelchair Accessible<br>
           <input type="checkbox" name="option4" value="alcohol" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option4'])){ echo "checked='checked'";} ?>/>Serves Alcohol<br>
           <input type="checkbox" name="option5" value="delivery" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option5'])){ echo "checked='checked'";} ?>/>Delivery Servicee<br>  
       </form>         

他のフォームが変更されても、両方のフォーム入力が保持されるようにしようとしています。どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

1

より良い解決策は、AJAX を使用することです。ただし、反対のフォームの値に対応する両方のフォームに非表示の入力フィールドを追加することもできます。

<form name='form2' method='post'>
       <input type="radio" name="group1" value="all" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == null || $_REQUEST['group1'] == "all"){ echo "checked='checked'";}?>/> All<br>
       <input type="radio" name="group1" value="Example" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "Example"){ echo "checked='checked'";}?>/> Example<br>
       <input type="radio" name="group1" value="clifton" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "clifton"){ echo "checked='checked'";}?>/> Clifton<br/>
       <input type="radio" name="group1" value="fruita" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "fruita"){ echo "checked='checked'";}?>/> Fruita<br/>
       <input type="radio" name="group1" value="loma" onClick="if (this.checked) this.form.submit();" <?php if ($_REQUEST['group1'] == "loma"){ echo "checked='checked'";}?>/> Loma<br/>
    <?php foreach( range( 1, 5) as $i): ?>
        <?php if(isset($_REQUEST['option' . $i])): ?>
            <input type="hidden" name="option<?php echo $i; ?>" value="1" />
        <?php endif; ?>
    <?php endforeach; ?>
</form>


<form name='form3' method='post'>
       <input type="checkbox" name="option1" value="smoking" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option1'])){ echo "checked='checked'";} ?>/> No Smoking<br>
       <input type="checkbox" name="option2" value="kids" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option2'])){ echo "checked='checked'";} ?>/>Good for Kids<br>
       <input type="checkbox" name="option3" value="wheelchair" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option3'])){ echo "checked='checked'";} ?>/>Wheelchair Accessible<br>
       <input type="checkbox" name="option4" value="alcohol" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option4'])){ echo "checked='checked'";} ?>/>Serves Alcohol<br>
       <input type="checkbox" name="option5" value="delivery" onClick="if (this.checked) this.form.submit();" <?php if(isset($_REQUEST['option5'])){ echo "checked='checked'";} ?>/>Delivery Servicee<br>  
       <input type="hidden" name="group1" value="<?php echo (isset($_REQUEST['group1']) ? $_REQUEST['group1'] : 'all'); ?>" />
</form>  

編集:これが動作することを示す デモです。

于 2012-07-20T00:55:51.550 に答える
0

この入力を1つのフォーム要素に結合する必要があります。フォーム要素は入力フィールドの情報のみを送信し、デフォルトのフォーム送信アクションを防止してajax経由で独自の呼び出しを行わない限り、他のフォーム要素のデータを送信できません

于 2012-07-20T00:55:18.353 に答える
0

したがって、ここにはサーバー側のコードがすべて欠けていますが、基本的な問題を説明できるので、解決できることを願っています。

form2 と form3 の 2 つのフォームがあります。form2 を送信すると、form3 のデータは送信されず、その逆も同様です。したがって、サーバーが新しいページ (送信後に表示されるページ) を送り返すとき、他のフォームからのデータが反映されていません。

必要なことは、両方のフォームからデータを送信することです。これを行う最も簡単な方法は、1 つのフォームを使用することですが、より凝ったものにしたい場合は、JS を介してそれらの値を結合したり、AJAX を介して両方を送信したりすることもできます。

于 2012-07-20T00:57:06.980 に答える