1

私は何を達成しようとしていますか?

メニュー項目をクリックすると高さが変わる JS によって制御される div があります。そのため、メニュー項目をクリックすると div が表示され、もう一度クリックすると消えます。

この div 内にフォームがあり、フォームが送信されると、フォームを送信するかどうかをユーザーに尋ねるメッセージが表示されます。はいと答えると、フォームが送信され、電子メールが送信されます。

ユーザーが「いいえ」と言った場合、メッセージは消え、ユーザーは変更を加えることができます。

問題

フォームが送信されると、投稿によりページが更新されます。したがって、divを非表示にします。

私の解決策は?

ユーザーが「はい」と答えると、e.preventDefault() とともに jQuery.post() を使用してフォームが投稿されます。

これは、

  1. フォームの更新を停止します (したがって、フォームの div はまだ開いています)
  2. フォームデータを投稿する

コード

     $('#form1').submit(function(e) {
            var currentForm = this;
            e.preventDefault();
             console.log("prevent default1");//Debug Line
            bootbox.confirm("Are you sure?", function(result) {
                if (result) {
                    e.preventDefault();
                    console.log("prevent default2");//Debug Line
                      $.ajax({
               type: 'POST',
               url: 'indextest2.php',
               data: $("#form1").serialize(),
               error: function () {
                   console.log('Ajax Error');//Debug Line
               }, 
               success: function (response) {
                    console.log('Ajax Success'); //Debug Line
                        }
                    });
                }
            }); 
        }); 

何が起こっている?

ユーザーがメッセージに「はい」と言うと、フォームはまだ投稿されているため、更新が発生します。

4

2 に答える 2

2

呼び出しreturn false;の直後に(これはブートボックスが結果の投稿を待機するためのものではなく)、句の直後に(フォームが送信されないようにするため)置くことができると思います。成功メソッドでブートボックスを呼び出すことができます。投稿後にブートボックスを閉じるための hideAll。$.poste.preventDefault()return false;bootbox.confirm

于 2014-11-03T13:06:10.360 に答える