Главная Веб-программинг
JavaScript |
Динамические формы и JavaScript |
|
|
| Автор Игорь Локтев | |||||||
| 08.03.2009 г. | |||||||
|
В этой статье мы рассмотрим примеры создания динамических форм с помощью JavaScript. Использование регулярных выражений в JavaScript+DHTML открывает нам много новых возможностей для создания удобного пользовательского интерфейса. Очень часто при создании HTML-форм возникает потребность узнать у пользователя значения однотипных параметров, количество которых заранее неизвестно. Например, если это форма добавления сообщения в форум с возможностью прикрепить один или несколько файлов, например, с фотографиями. Другим примером может служить форма с анкетой, в которой есть сведения о детях. И в том и другом случае невозможно заранее предположить количество полей, которые пожелает заполнить посетитель сайта. Без использования JavaScript эту задачу можно решить двумя путями:
Пусть, для определённости, пользователю необходимо ввести информацию о детях, а для упрощения примера - только имя и дату рождения. Со стороны пользователя нам понадобится браузер, понимающий тэг <span> и регулярные выражения, поддерживающий функцию getElementById объекта document, а также понимающий свойство innerHTML, например, Internet Explorer 4.0+ с установленой поддержкой DHTML, Konqueror 2.2+, Netscape 6, Mozilla начиная с M16.
Оформим ту часть формы, которая содержит информацию о детях, в виде таблицы. В самой первой строке таблицы мы разместим названия столбцов и добавим ещё одну ячейку, в которой разместим ссылку на добавление ещё одной строки с полями ввода информации. Во второй строке таблицы мы разместим сами поля ввода информации плюс ячейку со ссылкой на удаление строки с информацией. Чтобы можно было отличить строку данных от строки названий, добавим в тэг <tr> параметр id="newline" и номер строки в квадратных скобках (чтобы было легче отличить номер строки от символа 0) nomer="[0]". Затем поместим всю таблицу во внутрь тэга span с каким-либо именем, например, table. <span id="table"> <table border=0 cellspacing=0 cellpadding=3> <caption>Сведения о детях</caption> <tr><td>Имя</td><td>Дата рождения</td><td> <a href="#" onclick="return addline();">добавить</a></td></tr> <tr id="newline" nomer="[0]"> <td><input type="text" name="name[0]"></td><td><input type="text" name="date[0]"></td> <td valign="top"><a href="#" onclick="return rmline(0);">удалить</td></tr></table> </span>
Чтобы вся эта конструкция заработала, необходимо еще написать две функции на JavaScript: добавление новой строки и удаление ошибочно добавленной строки. Причём, в данном примере предполагается, что количество строк с данными может быть и нулевым, кроме того, у данной реализации динамической формы есть недостаток: если удалить все строки, то добавить строки уже будет нельзя. Впрочем, далее в коде программы есть вариации, которые запрещают удалять строку, если она осталась одна.
<script> результат выполнения браузером вышеуказанного примера выглядит так:
Таким образом, мы обнаружили, что использование регулярных выражений в JavaScript+DHTML открывает нам много новых возможностей для создания удобного пользовательского интерфейса.
|
|||||||
|
|
Вход / Регистрация
Новое
Продвижение сайта - это следующий логический шаг после завершения разработки са... |
По вашему мнению, сколько цветов в обычной радуге? Мы привыкли, что семь... |
По словам Сергея Брина, соучредителя и директора популярнейшего в мире поискови... |
Почему это важно? Гиперссылка - основа Интернета. Когда человек попадает на люб... |
Приветвтвую, вы хотите себе такие социальные кнопки? Хотите?
|
Последние комментарии
- Как заработать на Так.ру
Я сделал как описано,у меня код html авт... >>> - Как верстать на DIV-ах? Основы блочной в...
статья про блочную верстку неплоха, толь... >>> - Создание юзабилных форм с применением CS...
Каким плагином вы защитили свой сайт от ... >>> - Основные Интернет браузеры для WEB-разра...
Лучшие браузеры это Хром и FF(лучше всег... >>> - Заработок на рекламе Гугл Адсенс - все п...
У меня тоже есть сайт он о цветах но пос... >>>












Комментарии
RSS лента комментариев этой записи.