ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Сброс состояния модального окна в Bootstrap: пример кода

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для очистки модального окна Bootstrap после его закрытия используйте событие hidden.bs.modal, работая с jQuery. Воспользуйтесь примером:

JS
Скопировать код
$('#myModal').on('hidden.bs.modal', function () {
    $(this).find('form').trigger('reset'); // Форма очищена!
    $(this).find('.modal-body').html('');  // Мы достигли эффекта "пустого" modal-body.
});

В результате такого кода ваше модальное окно будет возвращаться к "новому" состоянию при каждом открытии.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Практические шаги для сброса модального окна

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

Очистка полей формы/ввода

Если в модальных окнах присутствуют формы, они могут быть сброшены таким образом:

JS
Скопировать код
$('#myModal').on('hidden.bs.modal', function () {
    $(this).find('form').trigger('reset');  // Форма мгновенно сбросится.
    $(this).find('form')[0].reset();        // Классический способ – это альтернативный вариант сброса.
});

Поля формы будут готовы к новому заполнению с чистого листа!

Сброс динамически загруженного содержимого

Чтобы уничтожить старое содержимое, следуйте этим шагам:

JS
Скопировать код
$('#myModal').on('hidden.bs.modal', function () {
    $(this).find('.modal-body').empty(); // Как «освобождение ума» в словах Морфеуса
    $(this).removeData('bs.modal');      // Мы говорим Bootstrap: "Забудь все".
});

Управление обработчиками событий

Для предупреждения возможных проблем со специфическими обработчиками событий модального окна следует применить следующие шаги:

JS
Скопировать код
$('#myModal').on('hidden.bs.modal', function () {
    // Удаляем ненужный 'click'.
    $(this).find('.save-button').off('click');
});

Это защитит будущие взаимодействия с вашим модальным окном от прошлых событий.

Визуализация

Жизненный цикл типичного модального окна Bootstrap выглядит так:

  1. Открытие модального окна: "Привет, мир!".
  2. Пользователь видит содержимое модального окна: "Формы повсюду!".
  3. Закрытие модального окна: "Прощай, мир. Прощай, формы...".
  4. Команда открыть модальное окно снова.
  5. Повторное открытие модального окна: "Привет снова, но уже без старых данных!".

То есть при каждом закрытии модальное окно очищается и возвращается к первоначальному состоянию при повторном открытии.

Клонирование: шаг за пределами обычного сброса

Клонирование — это возможность модального окна Bootstrap "возродиться" при каждом новом открытии.

Подготовка к "реинкарнации"

Перед первым открытием модального окна создаем его клон.

JS
Скопировать код
var originalModal = $('#myModal').clone(); // Пусть модальное окно позирует.

Воссоздание из клонированной копии

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

JS
Скопировать код
$('#myModal').on('hidden.bs.modal', function () {
    $(this).replaceWith(originalModal.clone()); // И вот оно, новое жизненное течение!
});

Примечание: Клоны удерживают события по умолчанию, так что обновленное модальное окно будет вполне функциональным!

Оптимизация производительности и совместимости

Используя методы сброса, важно учесть эффективность использования ресурсов и совместимость с разными версиями Bootstrap.

Оптимизация с помощью .empty()

JS
Скопировать код
$('#myModal').on('hidden.bs.modal', function () {
    $(this).find('.modal-body').empty(); // Эффективная очистка содержимого модального окна
});

Совместимость

Проверьте работоспособность вашего решения в разных версиях Bootstrap и будьте готовы к изменениям в новых версиях, следуя официальной документации Bootstrap.

Полезные материалы

  1. Modal · Bootstrap v5.0Официальная документация Bootstrap.
  2. .on() | jQuery API DocumentationОбработка событий в jQuery.
  3. jquery – Twitter bootstrap remote modal shows same content every time – Stack Overflow — обсуждение на Stack Overflow.
  4. EventTarget: addEventListener() method – Web APIs | MDNОсновы работы с 'addEventListener' от Mozilla.
  5. How to hide Bootstrap modal with JavaScript? – GeeksforGeeksУправление модальными окнами через JS от GeeksforGeeks.
  6. Bootstrap Blog · Official blog for the Bootstrap framework. — официальный блог Bootstrap для отслеживания свежих обновлений и изменений.