2012-10-25 32 views
0

好吧,我已經搜索了幾個小時,發現沒有任何工作。我絕望地需要幫助通過調用通過php的javascript重置表格

我得到了一個表單,其中包含以下元素。

<form action="sendmail.php" method="post" name="enquiry"> 
    <table> 
     <tr> 
      <td>Name:-</td> 
      <td><input type="text" name="name" /></td> 
     </tr> 
     <tr> 
      <td>Company:-</td> 
      <td> <input type="text" name="company" /></td> 
     </tr> 
     <tr> 
      <td>E-Mail:-</td> 
      <td><input type="text" name="email" /></td> 
     </tr> 
     <tr> 
      <td>Contact:-</td> 
      <td> <input type="text" name="contact" /></td> 
     </tr> 
     <tr> 
      <td>Requirement:-</td> 
      <td><textarea name="msg"></textarea></td> 
     </tr> 
    </table> 
    <input type="submit" value="submit" onclick="return validation(this.form);"> 
    <input type="reset" value="Reset" /> 
</form> 

和PHP有這樣一行:

<?php 
if(mail($to, $subject,$message)) { 
    echo "<SCRIPT LANGUAGE='JavaScript'>alert('Your Enquiry was sent successfully we will get back to you shortly'); 
       window.location.href='javascript:history.go(-1)'; 
       document.enquiry.reset(); 
     </SCRIPT>"; 
} 
?> 

然後還有一個「其他」具有相​​同的代碼,但不同的消息。

問題是,當它重新導向到表單頁面時,它仍然有字段中的數據。我更喜歡的是一種乾淨的表單,當用戶返回頁面時沒有填寫任何數據。

請注意我是一個JavaScript的新手,所以嘗試提出一個易於理解的修復。

非常感謝!

+0

重置後發生重置。 –

+0

如在????中該頁面加載,然後重置?認爲這是應該發生的......我該如何解決? sry但即時通訊仍然是新的javascript – TDsouza

+1

'需要幫助拼命' - 是這樣的語言歡迎根據SO許可? –

回答

2

那是因爲你回顧歷史 - 瀏覽器記得形式當你回去/轉發。

你在做什麼不是一個「正常」的用戶體驗 - 我建議你打印一個漂亮的頁面,在「sendmail.php」文件中表示感謝,然後讓用戶導航到他們想要的任何位置您的網站。

+1

+1。添加到上面,只需設置settimeout,例如5秒,然後重定向到表單。不要使用歷史記錄。只需將其重定向到url即可。 – itachi

+0

謝謝!現在我已經把鏈接放回到表單中,而不是回到歷史中。工作正常!我也計劃在你建議的感謝頁面上工作! – TDsouza

+0

要求你的答案被接受......嗯......你很好地解釋了這個問題,但你的解決方案在哪裏? (代碼明智) – Dementic

1

你的問題是使用JavaScript代碼:

window.location.href='javascript:history.go(-1)'; 
document.enquiry.reset(); 

中刪除此代碼

編輯:

使用此代碼:

if(mail($to, $subject,$message)){?> 
    <SCRIPT LANGUAGE='JavaScript'> 
    alert('Your Enquiry was sent successfully we will get back to you shortly'); 
    window.location.href='/*YOUR FORM PAGE LINK*/'; 
    </SCRIPT> 
<?php } 
+0

有一種感覺,可能是原因..它都是實驗性代碼..我希望它在提交後重定向回表單,但由於某種原因每次我添加一個url我會得到一個錯誤...什麼你建議我將上面的代碼替換爲獲得相同的效果? – TDsouza

+0

@TDsouza請檢查編輯 –

1

正如Ed所說,你回顧歷史,瀏覽器記得它。

試試這個:

,而不是這一行:window.location.href='javascript:history.go(-1)';

寫:window.location.href='RelativePathToActualForm';

+0

謝謝!這正是我做的..修復了一切 – TDsouza

0

處理表單提交後,你應該重定向到另一個頁面(或再次到表單中),並顯示您的留言例如有:

php header("Location: form.php?formpostwassuccessful=1"); 

那麼表單頁面

if(isset($_GET['formpostwassuccessful'])) 
    echo "Thank you. Your form was sent."; 

也看到redirect after post?

+0

這是一個可怕的想法。爲什麼你要通過get變量而不是驗證來控制流。 – itachi

+0

@itachi - 因爲他不知道更好。 – Dementic

+0

驗證是我的意思是「處理表單」。重定向是必要的,以便用戶瀏覽時,表單不會由瀏覽器 – cghamburg

0

簡單的解決方案:只需使用jquery - 一行是在頭部分被USEE包括在您的網頁的jQuery。

JavaScript代碼段,你給應包含:

window.location="theform_page_address" ; 

代替

window.location.href='javascript:history.go(-1)'; 
       document.enquiry.reset(); 

,並在表單頁面地址:添加下面的JS在頭部分片段:

<script type="text/javascript"> 
    $(document).ready(function(){ 


    $('input').val(''); 
    $('select').val('-1'); 

    $('textarea').val(); 

    }); 

</script> 

編輯:我假設你的表格有inputtextarea元素其中有一個空白默認值,並且select元素的-1作爲默認選項的值。

+0

重新提交。很多..只是做了類似的作品,如魅力!對於早先的語言感到抱歉 – TDsouza

0

首先看例子使用PHP基於會話的閃光消息http://mikeeverhart.net/php/session-based-flash-messages/

常見的流程:

  1. 用戶在表單填寫
  2. 壓力機提交
  3. 你的PHP腳本sendmail.php只會驗證表格
  4. 如果有一些驗證錯誤[設置錯誤信息]
  5. 如果有郵件發送錯誤[設置錯誤信息]
  6. 如果一切正常[設置成功消息]
  7. 從php重定向到窗體顯示頁面。

[設置錯誤|成功消息] - 使用上面提供的鏈接如何設置消息。

現在每當你渲染表單時,你都應該檢查設置的消息,如果有消息 - 顯示它們。

這些消息如何工作? 它只是將消息設置爲會話($ _SESSION)數組,然後在顯示消息時,會話中未設置消息。