Модальный диалог JavaScript без взаимодействия с пользователем, который нельзя закрыть

У меня есть страница, на которой пользователь может обновить форму, щелкнув имя объекта. Подумайте о списке имен и форме со всеми другими полями (адрес, возраст, пол и т. д.), обновляемыми с помощью AJAX из onClick. Как создать модальное диалоговое окно («Пожалуйста, подождите»), которое предотвращает взаимодействие с пользователем до тех пор, пока вызов AJAX не вернет данные? Я не хочу, чтобы пользователь мог нажать кнопку «X» или «Закрыть». Он или она должны ждать!


person user1062571    schedule 03.02.2012    source источник


Ответы (3)


Взгляните на плагин BlockUI.

Он позволяет блокировать взаимодействие со страницей или определенным элементом, добавляя оверлей поверх страницы или этого элемента. Вы можете определить сообщение и поставляется с кучей опций для настройки внешнего вида.

Например, вы можете заблокировать страницу, когда запрос ajax выполняется с помощью:

$(document).ajaxStart(function() {
    $.blockUI({
        message: '<h1>Just a moment...</h1>'
    });
}

$(document).ajaxStop(function() { $.unblockUI(); }
person Didier Ghys    schedule 03.02.2012
comment
Это отличный плагин, и он идеально подходит для того, что я хочу! Он может даже блокировать ввод отдельных элементов. Я блокирую перед вызовом AJAX и разблокирую при обратном вызове AJAX. Благодарю вас! - person user1062571; 04.02.2012

var d = document.createElement('div');
d.style.position = "fixed";
d.style.top = d.style.left = d.style.right = d.style.bottom = "0px";
document.body.appendChild(d);

Это базовая маска. После этого вы можете добавить дополнительные элементы, например поле «подождите».

person Niet the Dark Absol    schedule 03.02.2012

Вам нужно поместить DIV по всему содержимому страницы. Обычно это полупрозрачно, чтобы указать, что пользователь должен ждать. Иногда на оверлее есть "загрузочный" спиннер.

person Diodeus - James MacFarlane    schedule 03.02.2012