我有一个名为&#34的按钮;插入评论"。当用户点击它时,表单将被提交(使用ajax)并在数据库中插入新的注释。现在我的问题是当用户在此按钮上点击两次(快速)时,评论将被插入两次。
现在我想阻止再次插入,我的意思是我想在ajax进程工作时禁用所有事件......是否可能?
这是我的代码:
$("#bottunId").click(function(){
$("#form-"+pure_id).submit(function(e){
e.preventDefault(e);
comment(pure_id);
});
});
function comment(pure_id){
$("#textarea-"+pure_id).animate({opacity: 0.5}, 0);
var frm = $('#form-'+pure_id);
$.ajax({
url : frm.attr('action'),
type : frm.attr('method'),
data : frm.serialize(),
dataType : 'JSON',
success : function (commenting_system) {
if(commenting_system.error_msg){
$(".error_msg").html(commenting_system.error_msg); $(".error").fadeIn(200);
close_error_msg = setTimeout(function(){ $(".error").fadeOut(100); }, 5000);
$("#textarea-"+pure_id).animate({opacity: 1}, 0);
}
else{
$("#table-"+pure_id).append('<tr><td>new row</td></tr>');
$("#textarea-"+pure_id).animate({opacity: 1}, 0);
}
} // for success
}); // for ajax
} // function comment
答案 0 :(得分:1)
这对你有用。它在表单中设置了一个名为submitted
的标志,这将阻止表单再次提交,直到刷新页面。
$("#bottunId").click(function(){
$("#form-"+pure_id).submit(function(e){
if ($(this).data('submitted') !== true) {
// Mark it so that the next submit can be ignored
$(this).data('submitted', true);
// submit form
comment(pure_id);
}
e.preventDefault();
});
});
答案 1 :(得分:-2)
$("#bottunId").attr('disabled', 'disabled');
在ajax成功方法中你可以删除它。
$("#bottunId").removeAttr('disabled');