2012-04-08 6 views
0

私はHostGatorが提供する基本的なHTML/JavaScriptの連絡フォームを持っています。それはかなりうまくいきます...ユーザーが名前も無効なメールアドレスを送信した場合は、そうしたJavaScriptアラートポップアップが表示されます。これらのアラートは、ユーザーが[OK]をクリックするまで画面に表示されます。ただし、ユーザーが連絡先フォームを正しく送信すると、最終的な成功アラートは1秒半ほどしか持続しません。私は最終的な電子メールの成功を、指定されたページにリダイレクトされた時点でユーザーが[OK]ボタンをクリックするまで、指定された時間だけ最後に行う方法を見つけようとしています。 JavaScriptのhttp://www.hostgator.com/formmail.shtmlのコンタクトフォームにあるHostGatorの情報へのリンクはここにあります。ここには、投稿後の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

答えて

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

これはalert()を実行し、4秒(または2番目のパラメータで指定したもの)待ってからsubmit()を実行します。

+0

迅速な回答ありがとうございます。これは機能します。 – max

0

問題はdocument.hgmailer.submit();がプロセスにある間に、ポップアップが表示されているようです。送信の遅れのため、submit()が完了する前に数秒間ポップアップウィンドウが表示され、ターゲットページにリダイレクトされます。

一つの方法は、....submit()alert(....)を置くことである、またはあなたが非同期的にあなたのようなデータを投稿するjQueryのを使用することができます。



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

EDIT:

それとも、この全体のポップアップ事業を回避し、行うことができますこれは:



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

つまり、あなたは基本的にvalueを設定することができますこのよう"Email Me!"

から"Please wait..."にボタンを提出する、ユーザーが自分の電子メールはまだ処理されていると、彼らが完了する前にページを変更しないことを知っているだろう。

+0

感謝。この回答は他のものよりも少し教育的でしたが、最も効率的な簡単な方法で私の質問(私の主観的意見)に対処しませんでした。答えに時間を割いていただきありがとうございます。 – max

0

最後のアラートの[OK]ボタンをクリックするまで、フォームの送信を簡単に停止できます。 使用

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

関連する問題