点击后我试图禁用按钮。我试过了:
$("#ajaxStart").click(function() {
$("#ajaxStart").attr("disabled", true);
$.ajax({
url: 'http://localhost:8080/jQueryTest/test.json',
data: {
action: 'viewRekonInfo'
},
type: 'post',
success: function(response){
//success process here
$("#alertContainer").delay(1000).fadeOut(800);
},
error: errorhandler,
dataType: 'json'
});
$("#ajaxStart").attr("disabled", false);
});
但按钮未被禁用。当我删除$("#ajaxStart").attr("disabled", false);
时,该按钮被禁用。
虽然这没有按预期工作,但我认为代码序列是正确的。任何帮助将不胜感激。
答案 0 :(得分:37)
将$("#ajaxStart").attr("disabled", false);
放在成功函数中:
$("#ajaxStart").click(function() {
$("#ajaxStart").attr("disabled", true);
$.ajax({
url: 'http://localhost:8080/jQueryTest/test.json',
data: {
action: 'viewRekonInfo'
},
type: 'post',
success: function(response){
//success process here
$("#alertContainer").delay(1000).fadeOut(800);
$("#ajaxStart").attr("disabled", false);
},
error: errorhandler,
dataType: 'json'
});
});
这将确保在数据加载后将禁用设置为false ...当前您在同一点击功能中禁用并启用该按钮,即同时。
答案 1 :(得分:5)
在您的代码中,您只需禁用&启用相同按钮上的按钮,单击,。
您必须在完成AJAX调用
内启用它类似这样的事情
success: function(response){
$("#ajaxStart").attr("disabled", false);
//success process here
$("#alertContainer").delay(1000).fadeOut(800);
},
答案 2 :(得分:3)
我通过定义两个jquery函数解决了这个问题:
var showDisableLayer = function() {
$('<div id="loading" style="position:fixed; z-index: 2147483647; top:0; left:0; background-color: white; opacity:0.0;filter:alpha(opacity=0);"></div>').appendTo(document.body);
$("#loading").height($(document).height());
$("#loading").width($(document).width());
};
var hideDisableLayer = function() {
$("#loading").remove();
};
第一个函数在所有内容之上创建一个图层。该图层为白色且完全不透明的原因是,IE允许您点击它。
在做我的ajax时,我喜欢这样:
$("#ajaxStart").click(function() {
showDisableLayer(); // Show the layer of glass.
$.ajax({
url: 'http://localhost:8080/jQueryTest/test.json',
data: {
action: 'viewRekonInfo'
},
type: 'post',
success: function(response){
//success process here
$("#alertContainer").delay(1000).fadeOut(800);
hideDisableLayer(); // Hides the layer of glass.
},
error: errorhandler,
dataType: 'json'
});
});
答案 3 :(得分:2)
我通过使用ajax的全局函数
解决了这个问题 $(document).ajaxStart(function () {
$("#btnSubmit").attr("disabled", true);
});
$(document).ajaxComplete(function () {
$("#btnSubmit").attr("disabled", false);
});
这里是文档link。
答案 4 :(得分:1)
$.ajax()
调用“不会阻止” - 这意味着它会立即返回,然后立即启用该按钮,因此该按钮不会被禁用。
使用complete
:{{1}}时,您可以在AJAX成功,出错或完成后启用该按钮:http://api.jquery.com/jQuery.ajax/
完成(XMLHttpRequest的, textStatus)
一个功能 请求完成时调用 (在成功和错误回调之后 执行)。该函数被传递 两个参数:XMLHttpRequest 对象和分类的字符串 请求的状态(“成功”, “notmodified”,“error”,“timeout”或 “parsererror”)。这是一个Ajax事件。