0

ユーザーが送信ボタンでメッセージを送信した後、「送信に成功しました」というメッセージを表示するフォームがあります。

ただし、送信するとページが更新されるため、1秒後にフォームの元のページが再び表示されます。

コードは次のとおりです。

<label id="success" style="visibility:   hidden">Your request has been sent successfully</label>
<form method="post" id="messege" onsubmit="return checkAnswer()" style="font-size: medium; margin-top: 10%" dir="rtl">
<div class="clear"></div>
        <div class="content_item">


            <br><br>
          <div style="width:170px; float: right;">name</div>
          <div style="width:430px; float:left;"><p><input class="contact" type="text" id="your_name" value="" /></p></div>
            <br><br><br><br><br>
          <div style="width:170px; float:right;">email</div>
          <div style="width:430px; float:left;"><p><input class="contact" type="text" id="your_email" value="" /></p></div>
            <br><br><br>
          <div style="width:170px; float:right;">the messege</div>
          <div style="width:430px; float:left;"><p><textarea class="contact textarea" rows="8" cols="50" id="your_message"></textarea></p></div>
          <br style="clear:both;" />
</div>
</form> 

javascript関数は次のとおりです。

<script type="text/javascript">

    function checkAnswer() {
        var name = document.getElementById("your_name").value;
        if (name == "") {
            alert("!!! insert name");
            return false;
        }
        var email = document.getElementById("your_email").value;
        if (email == "") {
            alert("!!! insert mail");
            return false;
        }
        var message = document.getElementById("your_message").value;
        if (message == "") {
            alert("!!! insert massege");
            return false;
        }
        var ans = parseInt(document.getElementById("user_answer").value);
        if (ans != 12) {
            alert("!!! wrong answer");
            return false;
        }
        else {
            document.getElementById("success").style.visibility = 'visible';
            document.getElementById("messege").style.visibility = 'hidden';

            return true;
        }

    }

そして、asp.netコードは次のとおりです。

@{
    var db = Database.Open("MyProjectSite");

    var name="";
    var email="";
    var message="";
    var answer="";

     if(IsPost)
    {
        name=Request.Form["your_name"];
        email=Request.Form["your_email"];
        message=Request.Form["your_message"];
       var insertMessege="INSERT INTO messegesFromCustomers(name,email,content,isCustomer)"+"VALUES (@0,@1,@2,@3)";
       db.Execute(insertMessege,name,email,message,"לא");
       db.Close();
    }

}

成功メッセージのvisibleプロパティをjavascriptで"visible"に設定した場合、ページの更新を防ぐにはどうすればよいですか?

更新すると、成功メッセージも消去されます。

ありがとう

4

2 に答える 2

0

そのようなフォームを送信してページを更新したくない場合は、Ajaxを使用する必要があると思います。ページにフォームを送信できる唯一の方法は、データをASP.netコードに別の方法で送信しない限り、更新することです...1つの方法はAjaxを使用することです。(別のユーザーはiframeを使用していますが、おそらくAjaxの方が適しています)。

このリンクを見てください:

http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

これは、ajaxを使用して(jQueryを介して)ページを更新せずにフォームを送信する方法を示しています。

うまくいけば、これが役立ちます!

于 2012-11-29T02:52:00.590 に答える
0

あなたの場合、この関数を操作する最も簡単な方法は、送信が成功したことを示す url フラグを追加し、ページの読み込み時にそれをチェックして、ページが送信される前ではなく、確認メッセージを表示することです。保存されていません(ご覧のとおり)

于 2012-11-29T02:55:51.983 に答える