2012-07-20 81 views
2

我是PHP和Javascript的新手,剛開始有兩種形式的網站,一種形式有5個複選框,另一種形式有5個單選按鈕。當您更改單選按鈕的單選按鈕時,它會刷新頁面並使用新值。與複選框相同。不幸的是,如果您更改其中一個表單,然後更改其他表單,則第一個表單值將不再存在。double form refresh

下面的代碼:

<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>   

我試圖讓這兩種形式輸入要保存的其他形式的變化也是如此。 任何幫助將高度讚賞。謝謝!

+0

你已經描述了一個問題,但問題在哪裏? – bos 2012-07-20 00:53:20

+0

不能爲他們說話,但我認爲OP希望兩套輸入都能保持其價值。 – machineghost 2012-07-20 00:54:18

+0

哎呀對不起@machineghost是正確的...我會更新 – infinity 2012-07-20 00:55:07

回答

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> 

編輯:Here is a demo顯示它的工作。

+0

謝謝!非常棒! – infinity 2012-07-20 01:05:05

0

你有一個表單元素加入到這個投入,表單元素提交輸入字段的唯一信息,除非你阻止默認表單提交的行動,並通過使自己的呼叫不能發送其他表單元素的數據ajax

0

所以,你在這裏錯過了所有的服務器端代碼,但我可以解釋基本問題,並希望這將允許你解決它。

你有兩種形式,form2和form3。當您提交表單2時,它不會提交表單3的數據,反之亦然。所以,當你的服務器發回新的頁面(你看到後提交),它沒有反映在其中的其他形式的數據。

你需要做的是從這兩個表單發送數據。最簡單的方法是隻使用一種形式,但如果你想變得很花哨,你可以通過JS結合它們的值,或者甚至通過AJAX提交它們。