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

Как можно реализовать модальное окно с 8 страницами для заполнения данных и выбора вариантов ответов, а затем отправить выбранные варианты по электронной почте? Мне нужно создать форму так, чтобы пользователь мог заполнить данные на каждой странице и в конце ввести своё имя и номер телефона для отправки выбранных вариантов. Я не очень разбираюсь в JS, поэтому буду благодарен за подробные инструкции по реализации этой задачи.
  • 10 февраля 2024 г. 15:09
Ответы на вопрос 2
Создание многостраничного модального окна с 8 страницами может быть достигнуто с использованием сочетания HTML, CSS и JavaScript. Ниже представлена базовая структура, которая может вам помочь начать.

**HTML:**
Создайте основную структуру модального окна с различными "страницами" внутри. Каждая "страница" может быть представлена div-элементом.

```html
<!-- Модальное окно -->
<div id="myModal" class="modal">
  <!-- Содержимое модального окна -->
  <div class="modal-content">
    
    <!-- Страница 1 -->
    <div class="modal-page" style="display:block;">
      <!-- Ваши формы и инпуты для страницы 1 -->
      <button class="next">Next</button>
    </div>
    
    <!-- Страница 2 и так далее... -->
    <div class="modal-page" style="display:none;">
      <!-- Ваши формы и инпуты для страницы 2 -->
      <button class="prev">Previous</button>
      <button class="next">Next</button>
    </div>
    
    <!-- Последняя страница -->
    <div class="modal-page" style="display:none;">
      <!-- Форма для ввода имени и номера телефона -->
      <button class="prev">Previous</button>
      <button class="submit">Submit</button>
    </div>
    
  </div>
</div>
```

**CSS:**
Определите стили для модального окна и переключение видимости для страниц.

```css
.modal {
  display: none; /* Скрыть модальное окно по умолчанию */
  position: fixed; /* Оставаться на месте при прокрутке */
  z-index: 1; /* Находиться поверх всего */
  left: 0;
  top: 0;
  width: 100%; /* Полная ширина */
  height: 100%; /* Полная высота */
  overflow: auto; /* Включить прокрутку, если необходимо */
  background-color: rgb(0,0,0); /* Цвет фона */
  background-color: rgba(0,0,0,0.4); /* Цвет фона с непрозрачностью */
}

.modal-content {
  background-color: #fefefe;
  margin: 15% auto; /* 15% от верхней части и центрирован */
  padding: 20px;
  border: 1px solid #888;
  width: 80%; /* Можно задать фиксированную ширину */
}

.modal-page {
  display: none; /* Скрыть все страницы */
}

/* Отобразить первую страницу */
.modal-page:first-child {
  display: block;
}
```

**JavaScript:**
Создайте логику для переключения между "страницами" модального окна.

```javascript
document.addEventListener('DOMContentLoaded', function () {
    var currentIndex = 0; // Текущая страница
    var pages = document.querySelectorAll('.modal-page'); // Получаем все страницы
    var nextButtons = document.querySelectorAll('.next'); // Кнопки "Следующий"
    var prevButtons = document.querySelectorAll('.prev'); // Кнопки "Предыдущий"

    // Обработка нажатия "Следующий"
    nextButtons.forEach(function(button, buttonIndex) {
        button.addEventListener('click', function() {
            if (currentIndex < pages.length - 1) {
                pages[currentIndex].style.display = 'none';
                currentIndex++;
                pages[currentIndex].style.display = 'block';
            }
        });
    });

    // Обработка нажатия "Предыдущий"
    prevButtons.forEach(function(button, buttonIndex) {
        button.addEventListener('click', function() {
            if (currentIndex > 0) {
                pages[currentIndex].style.display = 'none';
                currentIndex--;
                pages[currentIndex].style.display = 'block';
            }
        });
    });

    // Обработка отправки данных
    document.querySelector('.submit').addEventListener('click', function() {
        var formData = {}; // Здесь
Думаю вам никто не отвечает, потому что никто вас не понял) 

Вы наверно имеете ввиду что то вроде квиза.

Создайте модальное окно.
В нем разместите 8 блоков с вопросами и один для показа формы.
Скройте их.
Напишите js, который будет реагировать на ответы и двигать пользователя вперед включая следующие блоки с ответами.
Вконце покажите форму, обработайте данные в полях и отправьте на сервер.
На сервере примите данные и отправьте их себе на почту.

Это самое простое решение.
Функционал квиза будет зависеть от ваших предпочтений .
Похожие вопросы