我有一个表单,其中包含一些用户详细信息,并允许他们上传文件。文件名和信息将保存到csv文件中。
如果用户未填写所有字段,表单会要求他们填写并重试。我希望它记住用户输入的值,因此我使用php设置表单字段的默认值:
value="<?php print $fulltitle;?>"
其中$ fulltitle = $ _POST ['fulltitle'];
但是,如果用户提交的内容不成功,则点击重置不会清除表单,它会返回之前的尝试。
如何使重置功能起作用?在重置按钮中,我尝试使用
onclick="<?php $fulltitle='' ?>"
但它似乎没有效果,我猜是因为PHP已经在您重置时已处理。
有人有任何建议吗?
编辑:
感谢您的帮助,我按照建议的简单重新加载解决了这个问题。 对于任何寻找问题答案的人来说:
代替我放置的重置按钮:
<FORM METHOD="LINK" ACTION="resetform.php">
<INPUT TYPE="submit" VALUE="Reset">
</FORM>
在文件resetform.php中我有:
<?php
$firstname = '' ;
$lastname = '' ;
$fulltitle = '' ;
$email = '' ;
// etc.
header("Location: submitfile.php");
?>
其中submitfile.php是表单
/ EDIT
修剪后的代码如下......
部首:
<?php
//error_reporting(E_ALL & ~E_NOTICE);
$message = false;
if(isset($_POST['Submit'])){
//user input with commas and < stripped:
$firstname = str_replace("<","",str_replace(",",";",$_POST['firstname']));
//if values missing, dont process:
if(empty($firstname)){
$message = '<span style="color:red;text-align:center;">Please complete all required(*) fields,<br />and check the file has been selected correctly.</span>';
$aClass = 'errorClass';
}
else {
//return data array cvsData from user input
$cvsData = $firstname
fwrite($fp,$cvsData);
fclose($fp);
//reset form
$firstname = '' ;
$message = '<span style="color:blue;text-align:center;">Submission successful, thank you.</span>';
}
}
//if page reloaded, clear form:
else {
$firstname = '' ;
}
?>
体:
<form enctype="multipart/form-data" id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" >
<table>
<?php
if ($message != false)
{
print "<tr><td colspan='2'><span align='center'>" . $message . "</span></td></tr>";
}
?>
<tr>
<td width="200"><span class="texto">*First Name(s)</span></td>
<td><input type="text" name="firstname" id="firstname" value="<?php print $firstname;?>" /></td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="submit" name="Submit" id="Submit" value="Submit"/>
<input type="reset" name="Reset" id="Reset" value="Reset" />
</div>
</td>
</tr>
</table>
答案 0 :(得分:2)
点击重置只会将表单重置为原始值。在您的情况下,这是他们原始的表单提交值,因为这是您在value
属性中设置的内容。如果要向用户显示空白表单,则需要使用JavaScript完全删除表单值。
这是一个应该执行此操作的JavaScript代码段:
function clear_form_elements(ele) {
tags = ele.getElementsByTagName('input');
for(i = 0; i < tags.length; i++) {
switch(tags[i].type) {
case 'password':
case 'text':
tags[i].value = '';
break;
case 'checkbox':
case 'radio':
tags[i].checked = false;
break;
}
}
tags = ele.getElementsByTagName('select');
for(i = 0; i < tags.length; i++) {
if(tags[i].type == 'select-one') {
tags[i].selectedIndex = 0;
}
else {
for(j = 0; j < tags[i].options.length; j++) {
tags[i].options[j].selected = false;
}
}
}
tags = ele.getElementsByTagName('textarea');
for(i = 0; i < tags.length; i++) {
tags[i].value = '';
}
}
然后将其放入重置按钮:
onclick="clear_form_elements(this.form[0])"