0

HostGator が提供する基本的な HTML/JavaScript 連絡フォームがあります。それはかなりうまく機能します...ユーザーが名前を送信しないか、無効な電子メールアドレスを送信すると、その旨を伝えるJavaScriptアラートがポップアップ表示されます. これらのアラートは、ユーザーが [OK] をクリックするまで画面に表示されたままになります。ただし、ユーザーが連絡先フォームを正しく送信した場合、最終的な成功アラートは 1/2 秒程度しか持続しません。最終的な電子メール成功アラートを指定された時間、またはユーザーが [OK] ボタンをクリックして指定されたページにリダイレクトされるまで持続させる方法を見つけようとしています。JavaScript を使用した連絡先フォームの HostGator 情報へのリンクは次のとおりですhttp://www.hostgator.com/formmail.shtmlこれは、送信後の JavaScript メッセージが、ユーザーが読む前に消えないようにするために変更しようとしているコードです。

<!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 (/^\S+@[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="myemail@mydomain.com">
<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>
4

3 に答える 3

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

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

于 2012-04-08T09:47:24.963 に答える
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.');
于 2012-04-08T09:53:09.777 に答える
0

ここでの問題document.hgmailer.submit();は、まだ処理中にポップアップが表示されるようです。送信の遅延により、完了する前に数秒のポップアップ ウィンドウが表示submit()され、ターゲット ページにリダイレクトされます。

1 つの方法は の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[送信] ボタンを ["Please wait..."から] に設定できます。"Email Me!"

こうすることで、ユーザーは自分の電子メールがまだ処理中であることを知り、完了前にページを変更しなくなります。

于 2012-04-08T09:45:28.053 に答える