私はPHPとajaxによって作成された連絡フォームを持っています。私がSend Message
ボタンのボタンのテキストをSending...
beforeSend
の機能の中にクリックしたときに欲しいです。私はSending...
のテキストを約5秒表示するまで、時間をボタンに設定したい。私は以下のようにsetTimeout関数を作成しましたが投稿フォーム中のbeforeSend関数のjQuery Ajax setTimeout
編集コードを動作しないだけであなたがする必要はありません、私はMYD done
関数内でいくつかの条件文を追加して、私はcomplete
関数内
(function (jQuery, window, document, undefined) {
'use strict';
jQuery('#contactForm').submit(function(event) {
var bsnname = jQuery('#bsnname').val();
var bsnsubject = jQuery('#bsnsubject').val();
var bsnemail = jQuery('#bsnemail').val();
var bsnmessage = jQuery('#bsnmessage').val();
jQuery.ajax({
url: 'http://localhost/wp/wp-content/plugins/Yallanpe-BSN/inc/class-contact-inc.php',
type: 'POST',
data: {'bsnname': bsnname, 'bsnsubject': bsnsubject, 'bsnemail': bsnemail, 'bsnmessage': bsnmessage},
dataType: 'json',
cache: false
})
.done(function(data) {
if (!data.success) {
if(data.errors.nameEmpty) {
jQuery('#name-field').append('<em class="text-danger">' + data.errors.nameEmpty + '</em>');
} else {
jQuery('#name-field .text-danger').fadeOut(25);
if(data.errors.nameLengthErrors) {
jQuery('#name-field').append('<em class="text-danger">' + data.errors.nameLengthErrors + '</em>');
}
}
if(data.errors.subjectEmpty) {
jQuery('#subject-field').append('<em class="text-danger">' + data.errors.subjectEmpty + '</em>');
} else {
jQuery('#subject-field .text-danger').fadeOut(25);
if(data.errors.subjectLengthErrors) {
jQuery('#subject-field').append('<em class="text-danger">' + data.errors.subjectLengthErrors + '</em>');
}
}
if(data.errors.emailEmpty) {
jQuery('#email-field').append('<em class="text-danger">' + data.errors.emailEmpty + '</em>');
} else {
jQuery('#email-field .text-danger').fadeOut(25);
if(data.errors.emailFormatErrors) {
jQuery('#email-field').append('<em class="text-danger">' + data.errors.emailFormatErrors + '</em>');
}
}
if(data.errors.messageEmpty) {
jQuery('#message-field').append('<em class="text-danger">' + data.errors.messageEmpty + '</em>');
} else {
jQuery('#message-field .text-danger').fadeOut(25);
if(data.errors.messageLengthErrors) {
jQuery('#message-field').append('<em class="text-danger">' + data.errors.messageLengthErrors + '</em>');
}
}
} else {
jQuery('#success-msg').append('<p class="bg-success">Message has been sent</p>');
}
})
.fail(function(data) {
});
jQuery(document).ajaxComplete(function() {
document.getElementById("contactForm").reset();
});
event.preventDefault();
});
}(jQuery, window, document));
...あなたが、その場合にはsetTimeout関数を使用する必要があるとは思いません。しかし、setTimeoutは変更を5秒遅らせることになります。私はbeforeSendの中に送信するボタンを変更して、それをAjaxリクエストのコールバックを使って送信したものに変更します。 –
私がメッセージを送るボタンをクリックすると、送信中のテキストが変わります...成功メッセージが表示されてから約5秒後に表示されます(成功メッセージは正しく動作しますが、約5秒間遅れます) –
なぜあなたは応答が通過するとすぐにテキストを変更しないのですか?あなたが探しているのは、タイムアウトなしでコード内にあるように、ボタンのテキストを送信するように設定することです。ちょうど5秒後にそれを変更するsettimeoutがあります。 –