双重表单刷新

时间:2012-07-20 00:48:32

标签: php javascript html

我是PHP和Javascript的新手,只是创建一个有两种形式的网站,一种形式有5个复选框,另一种有5种无线电按钮。当您更改所选单选按钮时,它会刷新页面并使用新值。与复选框相同。不幸的是,如果您更改其中一个表单,然后更改另一个表单,则第一个表单值将不再存在。

以下是代码:

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

即使其他表单发生更改,我也试图保留两个表单输入。 任何帮助将非常感激。谢谢!

3 个答案:

答案 0 :(得分: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显示其正常运作。

答案 1 :(得分:0)

您必须在一个表单元素中加入此输入,表单元素仅提交其输入字段的信息,并且无法发送其他表单元素的数据,除非您阻止默认表单提交操作并通过ajax进行自己的调用

答案 2 :(得分:0)

所以,你在这里缺少所有服务器端代码,但我可以解释一下基本问题,希望能让你解决它。

您有两种形式,form2和form3。提交form2时,它不提交form3的数据,反之亦然。因此,当您的服务器发回新页面(您在提交后看到的页面)时,它没有反映在其中的其他表单中的数据。

您需要做的是从两个表单中发送数据。最简单的方法是使用一个表单,但是如果你想得到想象,你可以通过JS组合它们的值,或者甚至通过AJAX提交它们。