2012-07-20 49 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提交它们。