JavaScript: модальное диалоговое окно из HTML-формы (каркас): ilyachalov — LiveJournal
Решил задачу «Модальное диалоговое окно с формой» к подразделу 4.4 «Отправка формы: событие и метод submit» второй части учебника по JavaScript.В задаче требуется написать функцию showPrompt(html, callback)
, которая выводит в область просмотра браузера модальное диалоговое окно с сообщением html
(первый параметр функции showPrompt
), текстовым полем ввода и двумя кнопками: «Ok» и «Отмена». Содержимое модального диалогового окна строится с помощью HTML-формы и HTML-элементов на этой HTML-форме. При нажатии клавиши «Enter» в текстовом поле ввода или нажатии кнопки «Ok» должна быть выполнена функция callback
(второй параметр функции showPrompt
) с параметром, представляющим собой значение из текстового поля ввода. При нажатии клавиши «Esc» или кнопки «Отмена» должна быть выполнена функция callback
(второй параметр функции showPrompt
) с параметром, представляющим собой значение null

По сути нам предлагается создать с помощью связки HTML, CSS и JavaScript аналог модального диалогового окна, выдаваемого браузером при запуске функции prompt
его интерфейса. Тут подробнее:
https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt
https://learn.javascript.ru/alert-prompt-confirm
Сначала нужно уяснить, что такое «модальное диалоговое окно». С понятием «диалоговое окно» лично мне всё давно уже понятно: это элемент пользовательского интерфейса, окно, в котором происходит диалог между пользователем и программой. Тут подробнее:
https://ru.wikipedia.org/wiki/Диалоговое_окно
С понятием «модальное диалоговое окно» несколько сложнее. В принципе, в интернете довольно быстро можно узнать, что

https://ru.wikipedia.org/wiki/Модальное_окно
Но почему это окно называется модальным? Откуда произошло это слово? Очевидно, что в русский язык оно пришло из английского языка, от слова «modal». В английском языке слово «modal» происходит от слова «mode» (по-русски «режим»). Например, в русском языке существуют понятия «режимный объект» или «режимное предприятие». О чем здесь речь? «Режимным» называют такой объект (или такое предприятие), на котором действуют некие особые правила («режим»), ограничивающие деятельность работников и посетителей по сравнению с обычными, более либеральными, правилами, действующими за границами территории этого объекта (предприятия). Точно также «режимное» («модальное») диалоговое окно ограничивает пользователя в его действиях так, что пользователь не может работать с главным окном, пока не закончит работу с модальным окном. Думаю, по-русски правильнее было бы говорить не «модальное окно», а «режимное окно», но словосочетание «модальное окно» уже является устоявшимся, поэтому буду пользоваться им.
В общем, об этом же коротко сказано и в тексте постановки задачи, цитата:
Форма является модальным окном, это значит, что никакое взаимодействие с остальной частью страницы невозможно, пока пользователь не закроет его.
Кроме текста постановки задачи у нас имеется тестовая HTML-страница
index.html
и файл стилей к ней style.css
, код которых можно посмотреть в песочнице. Также есть демонстрационный пример, который можно рассмотреть на отдельной странице и на странице задачи во фрейме.В конце текста постановки задачи есть следующее примечание, цитирую:
P.S. HTML/CSS исходного кода к этой задаче содержит форму с фиксированным позиционированием, но вы должны сделать её модальной.
На самом деле, тестовая HTML-страница уже содержит код на языке HTML, реализующий диалоговое окно, которое уже сделано модальным с помощью стилей, описанных на языке CSS. Наша задача — разобраться в коде тестовой HTML-страницы и написать скрипт на языке JavaScript, который заставит уже имеющееся работать так, как требуют условия задачи.

Тело тестовой HTML-страницы:
<body> <div> <form> <div>Введите что-нибудь... <br>Пожалуйста...</div> <input name="text" type="text"> <input type="submit" value="Ok"> <input type="button" name="cancel" value="Отмена"> </form> </div> </body>
Диалоговое окно здесь представлено HTML-элементом
div
с идентификатором prompt-form-container
(будем называть его «контейнером»). Внутри этого контейнера содержится HTML-форма с идентификатором prompt-form
. Эта HTML-форма содержит требуемые в задаче элементы: 1) сообщение, представленное HTML-элементом div
с идентификатором prompt-message
; 2) текстовое поле ввода с именем text
; 3) две кнопки «Ok» и «Отмена» (кнопка «Ok» имеет тип submit
, значит, можно будет использовать событие submit
, а кнопка «Отмена» имеет имя cancel
).
Внесем дополнения в тело тестовой HTML-страницы (я пометил изменения красным цветом):
<body> <!-- содержимое главного окна --> <h3>Кликните на кнопку ниже</h3> <button>Кликните, чтобы увидеть форму</button> <!-- диалоговое окно, дочернее для главного --> <div hidden> <form> <div>Введите что-нибудь... <br>Пожалуйста...</div> <input name="text" type="text"> <input type="submit" value="Ok"> <input type="button" name="cancel" value="Отмена"> </form> </div> <script src="myscript.js"></script> </body>
Заголовок «Кликните на кнопку ниже» и кнопку «Кликните, чтобы увидеть форму» я добавил, посмотрев работу демонстрационного примера от авторов задачи (в код не подглядывал, определил на глаз; там несложно определить, что используется HTML-элемент
h3
и какой-то код HTML для создания кнопки [в HTML кнопку можно создать несколькими путями].
button
и дать ему идентификатор button
).Очевидно, что этот заголовок и эта кнопка представляют собой содержимое «главного окна» по отношению к нашему модальному диалоговому окну.
При открытии тестовой HTML-страницы модальное диалоговое окно должно быть скрыто, поэтому я добавил атрибут hidden
к контейнеру нашего модального диалогового окна. (На время разбора стилей на языке CSS к модальному диалоговому окну этот атрибут можно убрать, но в итоговом варианте тестовой HTML-страницы он должен присутствовать.)
В файле myscript.js
Как это всё должно будет работать? Очевидно, предполагается, что пользователь загрузит тестовую HTML-страницу (главное окно) и увидит заголовок «Кликните на кнопку ниже» и кнопку «Кликните, чтобы увидеть форму». При желании пользователь может нажать на эту кнопку, после чего должно появиться наше модальное диалоговое окно, а содержимое главного окна должно стать недоступным, но остаться видимым. После этого пользователь сможет поработать с модальным диалоговым окном и в итоге он его закроет. Модальное диалоговое окно снова станет невидимым, а содержимое главного окна станет доступным для пользователя. И так далее.
Превращение вышеописанного каркаса диалогового окна на языке HTML в модальное диалоговое окно выполняется с помощью стилей на языке CSS, описанных в отдельном файле (ссылка на него была приведена выше).
Продолжение тут.
Как прикрепить готовое модальное окно к сайту с помощью CSS и JQuery
11 371 любопытных
Приветствую Вас, дорогие читатели блога. Сегодня я хочу рассказать Вам как прикрепить простое и уже готовое jquery модальное окно к сайту.
Как Вы уже, наверное, заметили, что в настоящее время каждый второй сайт имеет такие красивые окошки, которое всплывает при нажатии на какую нибудь ссылку.
В этом посте я не буду рассказывать как делать это всплывающее окно, я просто взял и скачал его из прошлого поста здесь (первое), и теперь хочу рассказать как данные исходники прикрепляются к сайту.
Данные модальные окна довольно просты и легки в установке. А так же присутствуют три примера всплывания: плавное сверху вниз, просто плавное появление, и стандартное без анимации.
В общем давайте прикреплять 🙂
Исходники
Первое, что нужно сделать это скачать сами исходники окон. Затем мы увидим следующее:
Как видите в исходниках у нас есть файл demo.html который Вы можете открыть и сразу же посмотреть пример всплывающих окон на компьютере. Так же присутствует скрипт самих окон jquery.reveal.js, затем jquery-1.4.4.min.js — это фреймворк jquery, если он у Вас уже прикручен, его можно удалить. И конечно же стили модальных окон reveal.css.
Ещё пару изображений которые используются в оформлении, они не так важны.
Вторым шагом будет прописание стилей и скриптов в сам код сайта.
Стили
Для начала нужно закачать скрипты и стили на хостинг в корневую папку сайта. Затем между тегами <head> </head> вставляем следующее:
<link rel="stylesheet" href="reveal.css"/>
таким образом мы прикрепили стили окон. Главное не забудьте поменять ссылку на стили. В данном случае это просто reveal.css.
Скрипты jquery
Теперь прикрепляем скрипты. Опять же между тегами <head> </head> пишем следующее:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.min.js"></script>
Это библиотека jquery. Повторюсь, возможно она уже прикреплена на Вашем сайте. Проверьте. Если да, то пропустите этот шаг.
Теперь сам скрипт модальных окон:
<script type="text/javascript" src="jquery.reveal.js"></script>
Вот видите, ничего сложного нет. Тем более, что уже большую часть работы сделали. 🙂 Главное не забудете указать правильную ссылку на скрипт jquery.
И теперь, чтобы наши окна заработали нужно прописать к желаемой ссылке соответствующие классы. И сам код всплывающего окна.
HTML
Так как здесь три примера, выбирайте тот который Вам ближе к душе:
<a href="#" data-reveal-id="myModal">Плавно сверху</a>
с этим классом модальное окно появляется плавно сверху.
<a href="#" data-reveal-id="myModal" data-animation="fade">Плавно</a>
здесь окно просто появляется плавно.
<a href="#" data-reveal-id="myModal" data-animation="none">Стандартно</a>
в этом случае появление окна стандартно, без анимации.
После того ка Вы определились со стилем всплывания окна, после ссылки ставим сам код модального окна. Он выглядит так:
<div> <h2>Зоголовок модального окна</h2> <p>Это стандартный вид модального окна, его оформление Вы с лёгкостью сможете изменить в CSS.</p> <a>×</a> </div>
Как видите между тегами <h2> и </h2> стоит заголовок, который нужно изменить как Вам нужно. А между тегами <p> и </p> сам текст.
Вот и всё, дорогие друзья. Если у Вас возникнут какие нибудь трудности или вопросы — спрашивайте в комментариях. До скорых встреч.
Bootstrap Modals
❮ Предыдущая Далее ❯
Модальный плагин
Модальный плагин представляет собой диалоговое/всплывающее окно, которое отображается поверх текущего страница:
Некоторый текст в модальном режиме.
Наконечник: Плагины могут быть включены по отдельности (используя индивидуальные настройки Bootstrap). «modal.js») или все сразу (используя «bootstrap.js» или «bootstrap.min.js»).
Как создать модальное окно
В следующем примере показано, как создать базовое модальное окно:
Пример
Модальный заголовок
Некоторый текст в модальном режиме.
Попробуйте сами »
Объяснение примера
9001 2 Часть «Триггер»:
Для запуска модальное окно, вам нужно использовать кнопку или ссылку.
Затем включите два атрибута data-*:
-
data-toggle="modal"
открывает модальное окно -
data-target="#myModal"
указывает на идентификатор модального окна
Модальная часть:
Родительский
модального окна должен иметь идентификатор, который является
то же, что и значение атрибута data-target, используемого для запуска модального окна («myModal»). Класс .modal
идентифицирует содержимое
как модальное и
обращает на это внимание. Класс .fade
добавляет эффект перехода, который затухает в модальном окне. и вне. Удалите этот класс, если вы не хотите этого эффекта.
Атрибут role="dialog"
улучшает доступность для
люди, использующие программы для чтения с экрана.
Класс .modal-dialog
устанавливает правильную ширину и поля
модальный.
Часть «Модальное содержание»:
с классом = "модальное содержимое
»
стили модального окна (граница, фоновый цвет и т. д.). Внутри этого
,
добавлять
модальные
заголовок, тело и нижний колонтитул. Класс .modal-header
используется для определения стиля заголовка
модальный.