在AJAX请求时禁用按钮

Adi*_*ing 30 ajax jquery jquery-ui

我试图在点击后禁用按钮.我试过了:

$("#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);
});
Run Code Online (Sandbox Code Playgroud)

但按钮没有被禁用.当我删除$("#ajaxStart").attr("disabled", false); 按钮被禁用.

虽然这没有按预期工作,但我认为代码序列是正确的.任何帮助将不胜感激.

Dam*_*ght 39

放入$("#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'
    });
});
Run Code Online (Sandbox Code Playgroud)

这将确保加载数据后将 disable设置为false ...当前,您在同一个单击功能中禁用并启用该按钮,即同时启用.

  • 实际上,我会把它放在`complete`回调中,因为如果请求失败,我不一定希望按钮保持禁用状态. (17认同)

Ram*_*Vel 5

在您的代码中,您只需在相同的按钮单击上禁用并启用该按钮.

你必须在AJAX调用完成后启用它

这样的事情

           success: function(response){
                    $("#ajaxStart").attr("disabled", false); 
                       //success process here
                       $("#alertContainer").delay(1000).fadeOut(800);
                   },
Run Code Online (Sandbox Code Playgroud)