тег | атрибут | свойство | стиль | ||
новые html-термины | line | aling | point | default | |
значения новых html-терминов | side | romb | |||
старые html-термины | td | id | list | ||
значения старых html-терминов | circle | ||||
коммуникационный xml | sound | sync | power | ||
значения коммуникационного xml | nouser | ||||
клавиатурные и мышиные команды | enter |
Бывают случаи, когда, в зависимости от выбора, сделанного на radio-кнопках (кругленькие такие, с черными пятнышками внутри), необходимо заполнять две совершенно различные части анкеты. Если их расположить обе в одном документе, то пользователь теряется в виджетах (да и портится внешний вид). Если расположить в двух документов, то усложняется логика работы СУБД (update, timeout). Предлагаю управлять появлением группы тегов на странице.
Обрамим группу специальным тегом multi, а у radio-кнопки, которая, будучи выбранной (checked), отобразит на экране связанные с собой теги (в дальнейшем также будем называть ее контрольной кнопкой), в атрибуте press укажем имя тега multi).
Итак, для случая "you are student - you are worker" код должен выглядеть так:
Пока в radio-кнопках кружочек не установлен (ни одна позиция не выбрана) пользователь видит следующее
вы являетесь: | |
Выбрав "student", пользователь увидит в окне
вы являетесь: | студентом |
рабочим | |
фамилия родителей | |
домашний телефон |
а выбрав "worker" - следующее
вы являетесь: | |
специальность | |
дата окончания | |
стаж по специальности |
Если пользователь выберет "student" и заполнит форму как указано ниже:
вы являетесь: | |
фамилия родителей | |
домашний телефон | |
тогда браузер отправит следующий текст
<stud family="Tomson" phone="1234567"> |
Если пользователь выберет "worker" и заполнит поля следующим образом
вы являетесь: | student |
worker | |
специальность | |
дата окончания | |
стаж по специальности |
то браузер отправит
Поля формы могут быть заполнены все - но не все отправлены. Переключение на другую группу полей не стирает значения, введенные ранее. Теги multi могут быть вложенными.
Для некоторых задач было бы удобно, чтобы группа тегов (а вместе с ними и текст, заключенный в них) отображалась в окне браузера по нажатию на некоторую кнопку, при повторном нажатии исчезала (как в некоторых шариковых ручках: нажал - стержень появился, еще раз нажал - исчез).
Обрамим группу специальным тегом (тем же самым multi), а у checkbox-кнопки, которая, будучи выбранной (checked), отобразит на экране связанные с собой теги (в дальнейшем будем называть ее аналогично контрольной кнопкой), в атрибуте press укажем имя тега multi).
Мы встречаем такие пункты, как перечисление предыдущих мест работы.
Очень часто (если не всегда) под перечень (заранее неопределенной
длины) отводится на странице несколько одинаковых ячеек,
например, виджетов
<input
type
=text
name
=Ai>
которых, как правило, либо
не хватает (приходится присылать пользователю новые страницы),
либо они остаются пустыми (и портят внешний вид).
Автор этой статьи хранит ранее сообщенную пользователем
информацию в hidden-переменных
<input
type
=hidden>
новой страницы, а затем
commit-ит (записывает) и input-hidden, и input-text в базе за один раз.
Возможны цепочки таких страниц, при этом каждая последующая страница
содержит всю информацию, введенную пользователем на
предыдущих. Даже если название всех файлов в цепочке
одно и то же, проверено, браузер правильно реагирует
на кнопку "back" (назад), безошибочно различая документы.
Однако, я думаю, вы согласитесь, что гонять одну и ту же
страницу из одного конца света в другой только ради того,
чтобы внести hidden-переменные неразумно.
Хотелось бы, чтобы по нажатию некоторой кнопки "еще" появлялись дополнительные html-структуры. Несколько тегов нужно собрать в группу, т.е. обрамить специальным тегом (пусть это будет multi). У кнопки, которая размножает группу тегов (в дальнейшем будем называть ее контрольной кнопкой), в атрибуте press укажем имя тега multi. Итак, для случая
дата приема |
дата увольнения |
название организации |
причина ухода |
|
---|---|---|---|---|
код должен выглядеть так
причем после трехкратного нажатия на кнопку пользователь должен видеть следующее
дата приема |
дата увольнения |
название оргинизации |
причина ухода |
|
---|---|---|---|---|
Если пользователь заполнит поля следующим образом
дата приема |
дата увольнения |
название оргинизации |
причина ухода |
|
---|---|---|---|---|
то браузер отправит (на другом сайте браузер заполнит такую форму автоматически, подставляя данные на основе номера тега WORKPLACE)
Если пользователь не нажмет на кнопку "else" ни разу, то браузер отправит
Если тег multi отсутствует
Для уменьшения количества полей после их размножения пользователь нажимает кнопку "back" браузера. Можно выделить несколько строк размноженных полей и вырезать/копировать в буфер обмена, а затем вставить в несколько строк (т.е. как в Excel).
Пусть пользователь размножил некоторый тег, находившийся внутри тега radio-кнопки, а затем переключил radio-кнопку на другое значение и затем назад на прежнее значение. Тогда он увидит размножаемый тег в единственном экземпляре.
Вложенность тегов multi
<work ...> <workplace ...> </work> |
Вложение внутрь тега multi, который непосредственно не обрамляет никакие виджеты, другого тега multi (который обрамляет), приводит к тому, что в отправляемом XML-тексте на некотором уровне иерархии появится дополнительный тег.
тег |
multi |
тег | атрибут | значение |
input |
press |
<input
type ="button">
|
<input
type ="radio">
|
<input
type ="checkbox">
|
загрузка страницы - виден один экземпляр объекта, нажатие кнопки - объект размножается |
загрузка страницы - виден один из альтернативных объектов, выбор кнопки - исчезновение одного, появление другого объекта |
загрузка страницы - объект виден или невиден, переключение кнопки - исчезновение и появление объекта |
html60author