我在下面有一个脚本,通过ajax将数据提交给服务器并且运行正常。我想要实现的是在提交时禁用按钮并在提交后重新启用它。
$(document).ready(function(){
$('.comment').on('submit',function(event){
event.preventDefault();
data = $(this).serialize();
$.ajax({
type: "POST",
url: "user_comment.php",
data: data
}).success(function(msg) {
$('#new_entry').html(msg);
$('.textbox').val("");
});
});
});
HTML
<form name="form1" method="post" action="" class="comment">
<p>
<label for="comment"></label>
<textarea name="comment" id="comment"></textarea>
</p>
<p>
<input type="submit" name="button" id="button" value="Submit Comment">
</p>
</form>
答案 0 :(得分:1)
您可以使用prop()之类的
$(document).ready(function() {
$('.comment').on('submit', function(event) {
$('#button').prop('disabled', true);
event.preventDefault();
data = $(this).serialize();
$.ajax({
type: "POST",
url: "user_comment.php",
data: data
}).success(function(msg) {
$('#button').prop('disabled', false);
$('#new_entry').html(msg);
$('.textbox').val("");
});
});
});
答案 1 :(得分:1)
尝试以下代码。用户Ajax beforeSend event
为
$(document).ready(function () {
$('.comment').on('submit', function (event) {
event.preventDefault();
data = $(this).serialize();
$.ajax({
type: "POST",
url: "user_comment.php",
data: data
beforeSend: function () {
$('#button').attr('disabled', true);
},
success: function () {
$('#button').attr('disabled', false);
$('#new_entry').html(msg);
$('.textbox').val("");
});
});
});
答案 2 :(得分:0)
只需添加两行代码即可将代码更新为以下内容,并且可以根据需要为您提供帮助。
$(document).ready(function(){
$('.comment').on('submit',function(event){
event.preventDefault();
data = $(this).serialize();
$("#button").prop('disabled',true); // disable
$.ajax({
type: "POST",
url: "user_comment.php",
data: data
}).success(function(msg) {
$('#new_entry').html(msg);
$('.textbox').val("");
$("#button").prop('disabled',false); // enable
});
});
});
答案 3 :(得分:0)
您是否尝试在功能开始时设置禁用attr(this.attr('disabled','disabled')
)并在成功时重新启用(this.removeAttr('disabled')
)?
答案 4 :(得分:0)
我会尝试以下方法:
$(document).ready(function(){
$('.comment').on('submit',function(event){
document.getElementById("button").disabled = true;
event.preventDefault();
data = $(this).serialize();
$.ajax({
type: "POST",
url: "user_comment.php",
data: data
}).success(function(msg) {
document.getElementById("button").disabled = false;
$('#new_entry').html(msg);
$('.textbox').val("");
});
});
});
答案 5 :(得分:0)
如果您这样做是为了防止发布双重帖子,则禁用按钮不是正确的做法。您必须始终使用代码,而不仅仅是在DOM中:
$(document).ready(function(){
$('.comment').on('submit',function(event){
event.preventDefault();
if ($('.comment').data('isWaiting')) {
return;
}
data = $(this).serialize();
$.ajax({
type: "POST",
url: "user_comment.php",
data: data
}).success(function(msg) {
$('#new_entry').html(msg);
$('.textbox').val("");
$('.comment').data('isWaiting', false);
});
$('.comment').data('isWaiting', true);
});
});
答案 6 :(得分:0)
$(document).ready(function() {
$('.comment').on('submit', function(event) {
event.preventDefault();
var button = $('#button');
button.prop('disabled', true);
data = $(this).serialize();
$.ajax({
type: "POST",
url: "user_comment.php",
data: data
}).success(function(msg) {
button.prop('disabled', false);
$('#new_entry').html(msg);
$('.textbox').val("");
});
});
});
答案 7 :(得分:-1)
禁用输入的点击事件。然后启用jQuery Ajax的成功函数。