Измените фон на статический для открытого модального бутстрапа

Могу ли я поменять фон на «статический», пока мой модал открыт?

У меня есть модал с кнопкой отправки формы. Когда я нажимаю на эту кнопку, я показываю загрузочный спиннер на моем моде, и это тот момент, когда я хочу изменить фон на статический

Я старался$('#myModal').modal({backdrop: 'static', keyboard: false}), но я все еще могу закрыть мой мод, нажав на фон или с помощью кнопки выхода.

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

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

Есть идеи?

 WillardSolutions04 авг. 2016 г., 15:05
Может быть, я не понимаю ваш вариант использования, но почему бы вам не инициализировать модальное состояние с помощью background: static и keyboard: false? Зачем вам нужно менять его, пока он открыт?
 David Passmore06 мар. 2018 г., 18:10
 Exik04 авг. 2016 г., 15:34
Потому что все другие мои модалы могут быть закрыты кнопкой выхода или щелчком за пределами модального окна. Я не хочу иметь только один модал, который пользователь не может закрыть, как другие, и я не должен менять все другие модалы. Это особый случай. При отправке я показываю спиннер на модальном и хочу отключить закрытие модального, пока спиннер активен.

Ответы на вопрос(5)

You can Disallow closing of #signUp (This should be the id of the modal) modal when clicking outside of modal.
As well as on ESC button.
jQuery('#signUp').on('shown.bs.modal', function() {
    jQuery(this).data('bs.modal').options.backdrop = 'static';
    jQuery(this).data('bs.modal').options.keyboard = false;
});

Мне вернули другой объект JavaScript и, таким образом, следующее решение:

$myModal.data("bs.modal")._config.backdrop = value;
Решение Вопроса

Хорошо, я решил это. Возможно, это не лучшее решение, но оно работает для моего особого случая.

я добавил$('#myModal').off('click'); только после того, как я показываю загрузочный счетчик при отправке. Это предотвращает закрытие модального с щелчком мыши.

Возникла проблема с отключениемescape кнопка, потому что браузер останавливает загрузку страницы, когда пользователь нажимает эту кнопку. Поэтому я решил скрыть счетчик, чтобы разблокировать форму с помощью этого кода:

$(document).on('keydown',function(e) {
  if (e.keyCode == 27) {
    $('#myLoadingSpinner').hide();
  }
});


Изменить: я нашел другое решение для фона:

$('#myModal').data('bs.modal').options.backdrop = 'static';

Я пробовал это также дляkeyboard = false, но это не работает.

Самый простой метод, который я придумала, это присоединение кhide.bs.modal событие и вызовpreventDefault(), Технически это не устанавливает фон в статический режим, но обеспечивает тот же эффект переключаемым способом.

let $myModal = $('#myModal');

function preventHide(e) {
    e.preventDefault();
}

// if you have buttons that are allowed to close the modal
$myModal.find('[data-dismiss="modal"]').click(() => 
    $myModal.off('hide.bs.modal', preventHide));

function disableModalHide() {
    $myModal.on('hide.bs.modal', preventHide);
}

function enableModalHide() {
    $myModal.off('hide.bs.modal', preventHide);
}

(Отказ от ответственности, я не тестировал создание кнопок, позволяющих скрыть модальные, так как это был не мой сценарий. Если это не работает, просто позвоните.modal('hide') отclick() Перезвоните.)

У меня был модал, который можно было открыть двумя разными способами. Когда пользователь открыл его одним способом, я хотел, чтобы он мог закрыть модальное окно. Когда они открыли его, я не хотел, чтобы они могли его закрыть.

Я нашел этот вопрос и использовал решение оригинального постера. Я также попытался добавить клавиатуру, которая теперь работает:

$('#myModal').data('bs.modal').options.backdrop = 'static';
$('#myModal').data('bs.modal').options.keyboard = false;

Ваш ответ на вопрос