如何阻止?用jquery多次点击一个按钮?
我想我在同一个按钮上多次点击都有问题。我以为我解决了它,但我认为有两个问题,而不是我认为的原始问题。如何阻止?用jquery多次点击一个按钮?
的第一个问题是,如果他们点击一个按钮(比如保存按钮),它会做很多保存AJAX的职位。
所以,如果他们点击了5次,因为他们在那里不耐烦它会做一个保存5次在某些情况下,有什么可以使服务器崩溃,但大部分时间只是做奇怪的结果。所以我找到了一个很好的插件,以确保重复的请求无法做出,我认为问题解决了。
但是我有一些按钮,你点击它,它使一个jQuery UI的对话框,我相信,如果你那个按钮点击5次它搅乱了对话。喜欢它不会做5个对话框,但我注意到表单中的控件突然不起作用。
所以,如果我只需点击一个按钮,在对话框创建它工作正常。如果我在对话框完成渲染之前单击按钮5次,我不会再看到验证错误,有时候它中的日期选择器消失了。
它只是不起作用。
所以我想我需要一些东西来制止这种大规模点击,所以我在想,如果被点击一个按钮,所有按钮将被禁用,直到它完成加载了什么。我不知道这是否是最好的方式,这就是为什么我问。
我也不确定把代码放在哪里。将它放在一个全球性的地区或者其他地方是非常好的,所以我不必把它放在每一种方法中。
谢谢
这样做有无数的方法。我更多的是一个核心的JavaScript人,但总体思路是获得所有能够触发Ajax调用并禁用它们的元素。
准确的代码将取决于您是否拥有多个输入元素类型为'submit',按钮元素的单个表单或者是否有多个表单。
jQuery有它可以遍历与阵列/对象的每个()方法。
非jQuery的解决方案可能是这样的:
function enableButtons() {
var buttons = document.getElementsByTagName("button");
for (var i=0; i<buttons.length; i++) {
buttons.disabled = false;
}
}
function disableButtons() {
var buttons = document.getElementsByTagName("button");
for (var i=0; i<buttons.length; i++) {
buttons.disabled = true;
}
}
那么一切都是按钮(因为jQuery UI对话框只能制作按钮)。所以没有提交按钮。 – chobo2 2010-07-05 21:00:06
您可以禁用提交按钮首次单击
$("#submit").click(function() {
$.ajax("url/to/file.php", data);
$(this).attr("disabled", "true");
});
后,您还可以使用async选项从jQuery的阿贾克斯阻止页面,而Ajax是被加载
$.ajax({
url: "url/to/file.php",
async: false,
data: data
});
我真的很喜欢这个插件。希望它能解决我的问题。我会让你知道的。 – chobo2 2010-07-05 22:01:40
好。请回过头来描述它是否以及如何解决问题,并将其中的答案标记为已接受。祝一切顺利。 – micahwittman 2010-07-06 03:20:42