Студопедия — Поля формы и их объекты
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Поля формы и их объекты






Как было сказано ранее, контейнеру <FORM> соответствует объект (назовем его f) класса Form; он является свойством объекта document. В свою очередь, элементы формы, вложенные в контейнер <FORM>, например, <INPUT> различных типов, тоже соответствуют объектам различных классов, причем эти объекты являются свойствами объекта f.

У всех объектов, отвечающих полям формы, есть несколько стандартных свойств, доступных только для чтения: name (имя элемента, заданное в атрибуте NAME), type (тип элемента, например, для контейнеров <INPUT TYPE="..."> он совпадает со значением атрибута TYPE), form (указывает на форму f, в которой данный элемент содержится).

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

document.форма.элемент.свойство // точечная нотация

document.форма.элемент["свойство"] // скобочная нотация

document.forms["имя_формы"].elements["имя_элемента"].свойство

document.forms[индекс_формы].elements[индекс_элемента].свойство

Однако получающиеся выражения - довольно громоздкие. Поэтому было введено следующее соглашение: в обработчике события формы или элемента формы имя текущего элемента можно опускать (вместе со всей предшествующей "приставкой"). Кроме того, ссылаться на сам текущий элемент можно с помощью ключевого слова this. Последнее может потребоваться, например, когда нужно передать в функцию не какое-то свойство объекта, а сам объект.

Например, предположим, что у нас есть форма:

<FORM NAME=f>

<INPUT TYPE=text NAME=e value="Текст" onFocus="">

<INPUT TYPE=button NAME=b value="Кнопка" onClick="">

</FORM>

Тогда вместо полной записи:

<INPUT TYPE=text NAME=e value="Текст" onFocus="alert(document.f.e.value)">

мы можем использовать краткую, опустив приставку " document.f.e ", указывающую на текущий элемент:

<INPUT TYPE=text NAME=e value="Текст" onFocus="alert(value)">

Более того, в этом контексте эквивалентны следующие записи:

value // короче не бывает!

this.value // здесь this ссылается на элемент "e"

form.e.value // form есть свойство объекта "e" (равное "f")

this.form.e.value // комбинируем оба способа

document.f.e.value // почти полная запись

window.document.f.e.value // это самая полная запись

document.f.e.form.e.value // можно итерировать "form.e."

Например, здесь в 3-й строчке form есть свойство (текущего!) элемента document.f.e - напомним, что это свойство ссылается на объект document.f. Аналогично, в обработчик onClick элемента b мы можем поместить скрипт form.e.value=50 (краткое обращение к свойству другого элемента формы: document.f.e.value) или alert(form.method) (краткое обращение к свойству самой формы document.f.method) или даже TestForBugs(this) (в пользовательскую функцию TestForBugs() будет передан (по ссылке) объект document.f.b).

Как видим, это соглашение не только дает некоторую экономию кода, но также позволяет ссылаться на текущий элемент или на форму, не зная его имени или номера. Это предоставляет дополнительную гибкость при программировании форм; например, можно переименовать форму, ничего не меняя во всех скриптах. Далее мы рассмотрим объекты JavaScript, соответствующие полям различных типов в HTML-формах. При этом мы будем пользоваться данным соглашением. Поскольку свойства name, type и form есть у объектов всех элементов формы, то мы не будем их указывать особо.

Текстовое поле ввода (объект Text)

Поля ввода (контейнер INPUT типа TYPE=text) являются одним из наиболее популярных объектов программирования на JavaScript. Это объясняется тем, что, помимо использования по прямому назначению, их применяют и в целях отладки программ, выводя в эти поля промежуточные значения переменных и свойств объектов.

Пример 2.

<A HREF="http://site.com/">ссылка 1</A>

<FORM>Число гипертекстовых ссылок к данному моменту:

<SCRIPT>

document.write('<INPUT NAME=t VALUE='+document.links.length+'>');

</SCRIPT>

<BR><INPUT TYPE=button

VALUE="Число ссылок по окончании загрузки страницы"

onClick="form.t.value=document.links.length;">

<BR><INPUT TYPE=reset>

</FORM>

<A HREF="http://rite.com/">ссылка 2</A>

В данном примере первое поле формы - это поле ввода. Мы присваиваем ему значение по умолчанию, равное числу гипертекстовых ссылок, имеющихся выше этого места в HTML-документе. Затем при помощи кнопки изменяем это значение на общее количество гипертекстовых ссылок во всем HTML-документе.

С каждым текстовым полем ввода <INPUT TYPE=text> связан свой объект класса Text, который является свойством той формы, в которой он был описан. Этот объект, в свою очередь, характеризуется следующими свойствами, методами и событиями:

Свойства, методы и события объекта Text
Свойства Методы Обработчики событий
defaultValue value size maxLength   disabled readOnly focus() blur() select() onChange onSelect   onFocus onBlur   onClick onDblClick onMouseOver onMouseOut onMouseDown onMouseUp   onKeyPress onKeyDown onKeyUp

Все перечисленные свойства можно менять. Смысл их таков: value (текущее значение поля ввода), defaultValue (значение поля ввода по умолчанию), size (число умещающихся в поле символов, т.е. видимых) maxLength (максимальное число символов, которое можно присвоить значению данного поля) readOnly (может ли пользователь менять значение поля) disabled (может ли пользователь установить фокус на этом поле).

Опишем вкратце методы: focus() - устанавливает фокус на данном поле, blur() - убирает фокус с данного поля, select() - выделяет весь введенный текст (чтобы, например, его можно было скопировать в буфер, либо удалить, нажав клавишу Delete).

Смысл обработчиков событий вполне понятен из их названий: обработчик onChange вызывается, когда пользователь (но не скрипт) изменил значение в поле ввода (и кликнул вне поля ввода); onSelect - когда пользователь начинает выделять текст, расположенный в поле; onFocus и onBlur - когда поле получает и теряет фокус, соответственно; onClick и onDblClick - когда пользователь совершил одинарный или двойной щелчок мышью на поле, соответственно. Вторая колонка событий - стандартна для большинства элементов HTML-страницы. Нужно лишь иметь в виду, что обработчики событий onMouseDown, onMouseUp, onKeyPress, onKeyDown, onKeyUp срабатывают у того элемента формы, который в данный момент находится в фокусе.

Списки вариантов (объекты Select и Option)

Одним из важных элементов интерфейса пользователя являются списки вариантов. В HTML-формах для их реализации используется контейнер <SELECT>, который вмещает в себя контейнеры <OPTION>. При этом список может "выпадать" либо прокручиваться внутри окна. В зависимости от наличия атрибута MULTIPLE у контейнера <SELECT> список может быть либо с возможностью выбора только одного варианта, либо нескольких вариантов.

С каждым контейнером <SELECT> ассоциирован объект класса Select, а с каждым дочерним контейнером <OPTION> - объект класса Option, являющийся свойством данного объекта класса Select. Кроме того, свойством объекта класса Select является также коллекция options[], объединяющая все его дочерние объекты Option. Перечислим основные свойства, методы и события, характеризующие эти объекты.

Объект Select
Свойства Методы Обработчики событий
options[] size length multiple selectedIndex focus() blur()   add() remove() onBlur onChange onFocus
Объект Option
Свойства Методы События
defaultSelected selected index text value нет нет
           

Мы не будем описывать все свойства, методы и события этих двух объектов. Остановимся только на типичных способах применения их комбинаций.







Дата добавления: 2015-09-07; просмотров: 358. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Этапы трансляции и их характеристика Трансляция (от лат. translatio — перевод) — процесс синтеза белка из аминокислот на матрице информационной (матричной) РНК (иРНК...

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

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

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия