2012-04-11 83 views
0

我有一個表單,它需要一些用戶詳細信息,並允許他們上傳文件。文件名和信息被保存到一個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

我敢肯定有這個地方的一個完美的欺騙。但在此期間,請參閱:http:// stackoverflow。com/questions/10001844/how-to-reset-a-form-that-uses-sticky-values和http://stackoverflow.com/questions/680241/resetting-a-multi-stage-form-with-jquery – NullUserException 2012-04-11 19:20:14

+0

對不起,我試過,但不能在谷歌條款中提出足夠的問題:) – ralph346526 2012-04-11 19:26:48

回答

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])" 
+0

謝謝,我是否會使用重置按鈕「onclick」屬性調用函數,或者有更好的方法嗎? – ralph346526 2012-04-11 19:24:21

+0

另一種選擇是重新加載頁面(並使PHP以原始形式輸出)。 – NullUserException 2012-04-11 19:25:23

+0

是這樣的嗎? ralph346526 2012-04-11 19:30:01