Время загрузки скрипта JQuery - PullRequest
6 голосов
/ 09 марта 2009

Если у меня есть кнопка, которая запускает скрипт jquery, есть ли способ убедиться, что кнопка неактивна, пока скрипт не завершится?

Ответы [ 3 ]

36 голосов
/ 09 марта 2009

Это одна из областей, где мне нравится расширять 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;
    });
}

и тогда вы можете сделать:

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

Я часто отключаю / включаю элементы управления.

10 голосов
/ 09 марта 2009

Где-то в начале вашего скрипта (возможно, при событии нажатия кнопки) установите для атрибута disabled кнопки значение true:

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

Затем, когда завершите, удалите этот атрибут:

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

EDIT:

Если вы хотите (немного) придумать, измените текст кнопки, пока выполняете работу. Если это кнопка с изображением, вы можете изменить src на дружеское сообщение «Пожалуйста, подождите». Вот пример текстовой версии кнопки:

$("#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);
});
3 голосов
/ 08 января 2014

Спасибо, Клетус за твою функцию. Я использовал вашу функцию и создал свою собственную для переключения отключенных элементов.

$.fn.toggleDisable = function() {
    return this.each(function() {
        if (typeof this.disabled != "undefined"){
                if(this.disabled){
                    this.disabled = false;
                }else{
                    this.disabled = true;
                }
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...