jQuery在.ajax()之前只允许单击一次
jQuery Allow only one click before .ajax()
我试图允许一个按钮只点击一次,然后通过ajax提交一些数据。我面临的问题是,用户可以点击50x,每次数据都是POST提交的?
jQuery("#id").unbind('click');
jQuery.ajax({
type: "POST",
url: ajax_url,
data: ajax_data,
cache: false,
success: function (html) {
location.reload(true);
}
});
如果用户单击#ID
100x,我如何确保数据只提交一次?然后重新启用#ID?
您可以在jQuery中使用.one()
函数。
jQuery("#id").one('click', function()
{
jQuery.ajax({
type: "POST",
url: ajax_url,
data: ajax_data,
cache: false,
success: function (html) {
location.reload(true);
}
});
});
请记住,这将完全删除点击事件,即使您的ajax出现错误,您仍然无法再次点击它。
只需禁用按钮
$("#id").attr("disabled", "disabled")
然后在成功功能中启用
$("#id").removeAttr("disabled")
最简单的方法是使用一个在成功触发时重置的标志:
if(clicked == False){
clicked = True;
jQuery("#id").unbind('click');
jQuery.ajax({
type: "POST",
url: ajax_url,
data: ajax_data,
cache: false,
success: function (html) {
location.reload(true);
clicked = False;
},
error: function () {
alert("Error happened");
clicked = False;
}
});
}
您可以禁用以控制,或者使用众多模式库中的一个来显示转轮
请参阅SO 上的Jquery模态对话框问题
您可以禁用按钮点击事件,并在ajax请求完成后将其启用。
在您的点击事件中,您可以禁用该按钮,然后在ajax事件的成功功能中重新启用该按钮。
另一种选择是在被点击的元素上设置一个参数,以指示按钮被点击,然后检查是否已设置。如果是,请不要发送ajax请求。如果不是,请发送。完成ajax后,您可以再次取消设置该参数,允许其运行。
试试这个:
$(document).ajaxStart({ function() {
$('#submit_button').click(function(){
return false;
});
});
其中:#submit_button是U要禁用的元素的id
该代码将禁止点击提交按钮
相关文章:
- 单击一次后禁用按钮-第2部分
- 如何对每个用户每天只允许单击一次的按钮进行编码
- 为每个字母单击一次
- 对同一类中的所有元素单击一次
- 单击一次以静音,另一次单击可取消静音
- 如何加载一个html页面并在其中只需单击一次即可运行函数
- 只需单击一次按钮,jquery即可自动淡入/淡出文本
- 菜单在每单击一次时切换不同的动画
- 双击时设置内容可编辑 - IE 不允许编辑,除非再单击一次
- 允许按钮在流星中只单击一次
- PHP 在输入内单击一次
- 如何创建只能单击一次的点击处理程序
- 每次单击一次迭代两个数组并制作动画
- 限制用户仅单击一次标记
- Javascript:同时启用 2 个文本框,单击一次复选框
- 在 jQuery 元素停止工作之前只能单击一次
- 单击一次按钮即可用随机化值填充多个输入
- 画布仅每隔单击一次即可更新
- 使用Javascript/jQuery单击一次
- 单击一次即可启动多个闪烁按钮