JQuery Script Load Timing

前端 未结 3 1719
猫巷女王i
猫巷女王i 2020-12-28 10:55

If I have a button that sets off a jquery script is there a way to make sure the button is inactive until the script completes?

相关标签:
3条回答
  • 2020-12-28 11:12

    This is one area where I like to extend jQuery:

    $.fn.disable = function() {
        return this.each(function() {
            if (typeof this.disabled != "undefined") this.disabled = true;
        });
    }
    
    $.fn.enable = function() {
        return this.each(function() {
            if (typeof this.disabled != "undefined") this.disabled = false;
        });
    }
    

    and then you can do:

    $("#button").disable();
    $("#button").enable();
    

    I find myself disabling/enabling controls a lot.

    0 讨论(0)
  • 2020-12-28 11:28

    Thanks cletus for your function. I have used your function and created my own to toggle disabled elements.

    $.fn.toggleDisable = function() {
        return this.each(function() {
            if (typeof this.disabled != "undefined"){
                    if(this.disabled){
                        this.disabled = false;
                    }else{
                        this.disabled = true;
                    }
            }
        });
    }
    
    0 讨论(0)
  • 2020-12-28 11:29

    Somewhere at the beginning of your script (probably on the button's click event), set the button's disabled attribute to true:

    $("#mybutton").attr("disabled", true);
    

    Then, when complete, remove that attribute:

    $("#mybutton").removeAttr("disabled");
    

    EDIT:

    If you want to get (slightly) fancy, change the text of the button while you're doing the work. If it's an image button, you can change the src to a friendly "please wait" message. Here's an example of the button text version:

    $("#mybutton").click(function() {
      var origVal = $(this).attr("value");
    
      $(this).attr("value", "Please wait...");
      $(this).attr("disabled", true);
    
      //Do your processing.
    
      $(this).removeAttr("disabled");
      $(this).attr("value", origVal);
    });
    
    0 讨论(0)
提交回复
热议问题