Как установить минимальную задержку для BlockUI?

#jquery #asp.net-mvc #json

#jquery #asp.net-mvc #json

Вопрос:

Я пытаюсь установить минимальное отображение BlockUI, но возникли проблемы. Независимо от того, какое значение я ввожу в setTimeout , элемент немедленно разблокируется.

Здесь я настраиваю параметры для плагина jQuery ajaxForm:

   var options = {
            type: 'POST',
            contentType: 'application/json; charset-utf-8',
            dataType: 'json',
            complete: function () {
                 setTimeout($('#MyElement').unblock(), 5000);
            }
        };
  

И здесь я показываю BlockUI в «myElement» при нажатии кнопки отправки.

  $('.submit').click(function () {
            window.showBlockUI($('#MyElement'));
        });
  

Есть идеи? Спасибо.

Комментарии:

1. Мэтт Болл — не уверен, что понимаю. Если я выполняю e.preventDefault() при отправке, BlockUI остается там навсегда, потому что я не получаю ответ от сервера.

Ответ №1:

Вы вызываете функцию в своем setTimeout() , не передавая ссылку на функцию, чтобы она выполнялась немедленно и передавала возвращаемый результат этой функции setTimeout() . Таким образом, он выполняется немедленно.

Измените его на это:

 complete: function () {
    setTimeout(function() {$('#MyElement').unblock()}, 5000);
}
  

или в чуть менее компактной форме, где вы можете видеть это лучше:

 complete: function () {
    setTimeout(function() {
        $('#MyElement').unblock()
    }, 5000);
}
  

Комментарии:

1. Я люблю stackoverflow, серьезно. Спасибо. (Этот ответ будет принят через 9 минут)