我有一个用PHP处理的表单。在用户提交之前,“重置”按钮有效。但是当他们提交并重新加载页面时(我根据$ _POST值使表单字段粘滞),重置不起作用。我该如何解决这个问题? 编辑: 例如,表单上的复选框:
<input type="checkbox" <?php if (isset($_POST['cb12'])){echo 'checked="checked"';} ?> name="cb12" tabindex="34" id=cb value="Education">
HTML:
<tr>
<td colspan="5" valign="top" class="addit" ><div class="sectionbreak topsp" >
<input type="hidden" name="failure" value="failure.html" >
<p>
<input type="submit" name="Submit" value="Submit" tabindex="49">
Sends your application by email to The Boggs</p>
<p>
<input type="reset" name="Reset" value="Reset" tabindex="50">
Clears all the fields</p>
</div></td>
</tr>
编辑: 最后,如果表单已提交(但未完成),我只是隐藏了按钮。也许没有人会注意到。
答案 0 :(得分:7)
重置按钮撤消对用户所做的表单的更改,它不会删除默认值。如果要删除所有默认值,可以使用JavaScript执行以下操作:
<script type="text/javascript">
function resetForm(myFormId)
{
var myForm = document.getElementById(myFormId);
for (var i = 0; i < myForm.elements.length; i++)
{
if ('submit' != myForm.elements[i].type && 'reset' != myForm.elements[i].type)
{
myForm.elements[i].checked = false;
myForm.elements[i].value = '';
myForm.elements[i].selectedIndex = 0;
}
}
}
</script>
...
<form id="myFormId" ...>
<input name="reset" type="reset" onclick="resetForm('myFormId'); return false;" />
...
答案 1 :(得分:4)
您可以使用unset($_POST)
对重置事件做出反应。
答案 2 :(得分:2)
我刚刚完成了这个问题,请参阅我的previous question & the incredible helpful answers。
最后,我必须手动重置PHP中的值。
编辑:对你来说情况并不完全相同,因为你似乎在填充基于$ _POST的表单值,而不是像我一样填充$ _SESSION。在这种情况下,请参阅我通过上面的链接接受的答案。
答案 3 :(得分:2)
已经在另一篇文章中回答了这个问题:
我只是PHP中的中间人,有点懒于深入研究像JQuery这样的新语言,但这不是以下简单而优雅的解决方案吗?
<input name="Submit1" type="submit" value="Get free quote" />
<input name="submitreset" type="submit" value="Reset" />
看不出有两个提交按钮的原因,只是出于不同的目的。然后简单地说:
if ($_POST['submitreset']=="Reset") {
$_source = "--Choose language from--";
$_target = "--Choose language to--"; }
您只需将值重新定义为默认值即可。
答案 4 :(得分:2)
重置按钮撤消对用户创建的已编辑表单值的更改,它不会删除默认值。编辑页面或提交页面中常用的重置按钮
<input type="reset" value="Reset" name="reset" />