2012-04-08 123 views
0

我有一個HostGator提供的基本的HTML/JavaScript聯繫表單。它工作得很好......如果用戶沒有提交名稱或無效的電子郵件地址,就會彈出一個JavaScript警報。這些警報將保留在屏幕上,直到用戶單擊確定。但是,如果用戶正確提交聯繫表單,最終成功提醒只能持續1/2秒左右。我試圖弄清楚如何在指定的時間內最後發送最終電子郵件成功警報,或者直到用戶點擊確定按鈕,然後將它們重定向到指定頁面。這裏是鏈接到HostGator信息的聯繫表格w/JavaScript http://www.hostgator.com/formmail.shtml,這裏是我試圖改變的代碼,以獲得提交後的JavaScript消息,而不是在用戶甚至有機會閱讀之前消失。Javascript提醒窗口 - 如何設置len

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<title>FormMail Demo</title> 
<script type="text/javascript"> 
function hgsubmit() 
{ 
if (/\S+/.test(document.hgmailer.name.value) == false) alert ("Please provide your name."); 
else if (/^\[email protected][a-z0-9_.-]+\.[a-z]{2,6}$/i.test(document.hgmailer.email.value) == false) alert ("A valid email address is required."); 
else if (/\S+/.test(document.hgmailer.comment.value) == false) alert ("Your email content is needed."); 
    else { 
     document.hgmailer.submit(); 
     alert ('Thank you!\nYour email is sent.'); 
     } 
} 
</script> 
</head> 
<body> 
<form action="http://www.mydomain.com/cgi-sys/formmail.pl" method="post" name="hgmailer"> 
<input type="hidden" name="recipient" value="[email protected]"> 
<input type="hidden" name="subject" value="FormMail E-Mail"> 
Whatever you want to say here<br><br> 
Visitor Name: <input type="text" name="name" size="30" value=""><br> 
Visitor E-Mail: <input type="text" name="email" size="30" value=""><br> 
E-Mail Content: <textarea name="comment" cols="50" rows="5"></textarea><br><br> 
<input type="button" value="E-Mail Me!" onclick="hgsubmit();"> 
<input type="hidden" name="redirect" value="http://www.mydomain.com/redirect-path"> 
</form> 
</body> 
</html> 
+1

嘗試把警報()前提交() – anuragsn7 2012-04-08 09:31:15

回答

0
else { 
    alert('Thank you!\nYour email is sent.'); 
    setTimeout("document.hgmailer.submit()", 4*1000); 
    } 

這應該做的警報(),等待4秒(或任何你在第二放慢參數指定),然後進行提交()。

+0

感謝您的快速回答。這工作。 – max 2012-04-08 20:36:52

0

這裏的問題似乎彈出如圖同時document.hgmailer.submit();仍在進行中。由於延遲提交,您會在submit()完成之前看到彈出窗口一小部分,並且您被重定向到目標頁面。

一種方法是把alert(....)....submit()之前,或者您可以使用jQuery異步上傳你喜歡的數據:



    $.post("target_Page_Address", 
      { var1: value1, var2: value2 // and so on }, 
      function(response){ // Do something based on response } 
     ); 

編輯:

或者你能避免這整個彈出的業務和做這樣的:



    document.hgmailer.submit_button_name.value= 'Please wait...'; 
    document.hgmailer.submit(); 

也就是說,你基本上可以設置value"Email Me!"

提交按鈕"Please wait..."這樣的,用戶就會知道他們的電子郵件仍在處理中和完成之前,他們是不會改變的頁面。

+0

謝謝。這個答案比其他人更有教育意義,但沒有以最有效的簡單方式解決我的問題(我的主觀觀點)。感謝您花時間回答。 – max 2012-04-08 20:40:23

0

您可以輕鬆停止表單提交,直到用戶單擊最後一次提醒的「確定」按鈕。 使用

alert ('Thank you!\nYour email is sent.'); 
//waits here until user click 'ok', then submit! 
document.hgmailer.submit(); 

代替,

document.hgmailer.submit(); 
alert ('Thank you!\nYour email is sent.'); 
+0

謝謝!這是完成我所嘗試的另一個好方法。 – max 2012-04-08 20:37:36