2

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

我试图让两个表单输入都被保留,即使另一个表单发生变化。任何帮助将不胜感激。谢谢!

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

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

于 2012-07-20T00:55:18.353 回答
0

所以,你在这里遗漏了所有的服务器端代码,但我可以解释基本问题,希望这能让你解决它。

您有两个表格,表格 2 和表格 3。当你提交form2时,它不会提交form3的数据,反之亦然。因此,当您的服务器发回新页面(您在提交后看到的页面)时,它不会反映来自其他表单的数据。

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

于 2012-07-20T00:57:06.980 回答