2009-03-09 16 views
5

Jeśli mam przycisk, który uruchamia skrypt jquery, czy jest jakiś sposób, aby upewnić się, że przycisk jest nieaktywny, dopóki skrypt się nie zakończy?JQuery Script Load Timing

Odpowiedz

10

Gdzieś na początku skryptu (prawdopodobnie na kliknij zdarzenie przycisk za), ustaw atrybut wyłączył Buttona true:

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

Potem, kiedy zakończeniu usunąć ten atrybut:

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

EDYCJA:

Jeśli chcesz uzyskać (odrobinę) ochotę, zmień tekst przycisku podczas wykonywania pracy. Jeśli jest to przycisk obrazu, możesz zmienić src na przyjazny komunikat "proszę czekać". Oto przykład z wersji przycisk tekstem:

$("#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); 
}); 
33

Jest to jeden obszar, w którym chciałbym przedłużyć 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; 
    }); 
} 

a następnie można zrobić:

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

znajdę się wyłączanie/włączanie elementów sterujących.

+0

Preferuję to rozwiązanie. Możesz łatwo ulepszyć funkcję zmiany tekstu. – Raithlin

3

Dziękuję cletus za twoją funkcję. Użyłem twojej funkcji i stworzyłem własne, aby przełączać wyłączone elementy.

$.fn.toggleDisable = function() { 
    return this.each(function() { 
     if (typeof this.disabled != "undefined"){ 
       if(this.disabled){ 
        this.disabled = false; 
       }else{ 
        this.disabled = true; 
       } 
     } 
    }); 
} 
Powiązane problemy