#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 минут)