私は何を達成しようとしていますか?
メニュー項目をクリックすると高さが変わる JS によって制御される div があります。そのため、メニュー項目をクリックすると div が表示され、もう一度クリックすると消えます。
この div 内にフォームがあり、フォームが送信されると、フォームを送信するかどうかをユーザーに尋ねるメッセージが表示されます。はいと答えると、フォームが送信され、電子メールが送信されます。
ユーザーが「いいえ」と言った場合、メッセージは消え、ユーザーは変更を加えることができます。
問題
フォームが送信されると、投稿によりページが更新されます。したがって、divを非表示にします。
私の解決策は?
ユーザーが「はい」と答えると、e.preventDefault() とともに jQuery.post() を使用してフォームが投稿されます。
これは、
- フォームの更新を停止します (したがって、フォームの div はまだ開いています)
- フォームデータを投稿する
コード
$('#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
}
});
}
});
});
何が起こっている?
ユーザーがメッセージに「はい」と言うと、フォームはまだ投稿されているため、更新が発生します。