Методы и обработчики событий
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Объект button имеет метод click() - о нем будем говорить позже.

Обработчик событий onClick позволяет выполнить оператор или вызвать функцию языка JavaScript при щелчке мыши на кнопке, которой соответствует в программе определенный объект button.

Пример

Приведем простой пример, например, выведем текущую дату и время посредством нажатия кнопки. Будем использовать событие onClick для вызова метода alert() и конструктора Date() Пример схематичный, объект должен быть определен

 

<form>

<input type="button"

value="Date and Time"

onClick='alert(Date())'>

</form>

Объект checkbox

Контрольный переключатель - это кнопка(флажок), которую можно установить в одно из двух состояний: включено или выключено. Объекты checkbox являются свойствами объекта form и должны быть помещены в теги <form> . . . </form>. Простой контрольный переключатель:

Checkbox1

Checkbox2

Checkbox3

Синтаксис:

<input name="checkboxName"

type="checkbox"

value="checkboxValue"

[checked]

[onClick="handlerText"]>textToDisplay

 

где атрибут name является именем объекта checkbox. Ему соответствует свойство name объекта языка JavaScript. Атрибут value определяет значение, которое передается серверу при пересылки значений элементов формы, если контрольный переключатель включен. Необязательный атрибут checked указывает, что контрольный переключатель должен быть включен по умолчанию. Если этот атрибут задан, свойство defaultChecked имеет значение true. При помощи свойства checked можно определить, включен ли контрольный переключатель. Текст, отображаемый рядом с контрольным переключателем, задается строкой textToDisplay.

К объекту checkbox можно обращаться одним из способов:

o checkboxName.propertyName

o checkboxName.methodName (parameters)

o formName.elements[i].propertyName

o formName.elements[i].methodName (parameters)

где checkboxName - значение атрибута name объекта checkbox, а formName - имя объекта form или формы, которой принадлежит данный контрольный переключатель. Другими словами, к форме можно обращаться как к элементу массива forms, например forms[0] - для обращения к первой форме документа, либо по имени объекта form, если оно определено в атрибуте name HTML-тега <form>.

К любому элементу формы можно обратиться так же, как к элементу массива elements, который является свойством объекта form. В этом случае для обращения к определенному контрольному переключателю следует использовать его порядковый номер (i) в массиве всех элементов формы.

Свойства

Если контрольный переключатель включен, свойство checked имеет значение true. Когда в теге <input> используется атрибут checked, например <input checked type=checkbox>, свойсту defaultChecked также присваивается значение true. Свойство name соответствует атрибуту name тега <input name= . . . type=checkbox>, а свойство value - атрибуту value тега <input>. (оно и правильно. ключевые слова и должны соответствовать чтобы путаницы небыло). Свойство type объекта checkbox всегда содержит значение "checkbox".

Методы и обработчики событий

Метод Click() может использоваться с объектом checkbox, мне не приходилось его использовать, но есть много замечаний в адрес этого метода, - в некоторых браузерах он должным образом не работает. Но тем не менее он имеется. Для объекта checkbox предусмотрен только один обработчик - onClick(). Об этом и других событиях языка JavaScript поговорим позже в отдельном разделе.

Массив elements

Массив elements содержит все элементы HTML-формы - контрольные переключатели (checkbox), селекторные кнопки (radio-button), текстовые объекты (text) и другие, - в том порядке, в котором они определены в форме. Этот массив можно использовать для доступа к элементам формы в JS-программе по их порядковому номеру, не используя свойства name этих элементов. Массив elements, в свою очередь, является свойством объекта forms, поэтому при обращении к нему следует указывать имя формы, к элементу которой вы хотите обратиться:

o formName.elements[i]

o formName.elements[i].length

Здесь formName может быть либо именем объекта form, определенным при помощи атрибута name в теге <form>, либо элементом массива forms, например forms[i], где i - переменная, которая индексирует элементы массива. Значением свойства length является количество элементов, содержащихся в форме. Массив elemments включает данные только для чтения, т.е. динамически записать в этот объект какие-либо значения невозможно.

Свойства

Объект elements имеет только одно свойство, length, значением которого является количество элементов объекта form.

document.forms[0].elements.length

возвратит значение, соответствующее количеству элементов в первой форме текущего документа.

Пример

Создадим пару элементов, например поля ввода для имени и адреса:

Имя: Адрес:

 

Теперь рассмотрим текст этой программы:

 

<html>

<head>

<script language="JavaScript">

<!--

function showElem(f) {

var formEl = " ";

for (var n=0; n < f.elements.length; n++) {

formEl += n + ":" + f.elements [n] +"\n";

}

alert("Элементы в форме '" + f.name + "' :\n\n" + formEl );

}

//-->

</script>

</head>

<body>

<form name="Форма для примера">

Имя:

<input type="text" size=10 name="fullname">

Адрес:

<textarea name="adr"></textarea>

<BR>

<input type="button" value="Смотрим элементы" onClick="showElem(this.form)">

</form>

</body>

</html>

 

Здесь функция перебирает все элементы массива elements заданной формы, в данном примере их три, формирует строку formEl, содержащую информацию об элементах данного массива. IE покажет здесь в виде "n:[object]" то есть этот браузер не содержит в массиве elements строки с информацией об объекте формы. Созданная строка (для удобства читаемости разделена "переводом строки \n" ) выводится в окне предупреждения с помощью метода alert(). Функция showEl() вызывается с аргументом this.form, который обращается к текущей форме. Если оператор this опустить, то из функции showEl() к форме придется обращаться с помощью выражения document.forms[n], - это не очень удобно, так как мы обращаемся из текущей формы.

Объект form и массив forms

Форма - это область гипертекстового документа, которая создается при помощи контейнера <form> . . . </form> и содержит элементы, позволяющие пользователю вводить информацию. Многие HTML-теги, например теги, определяющие поля ввода (text field), области текста (textarea), контрольные переключатели (checkbox), селекторные кнопки (radio button) и списки (selection list), располагаются только в контейнере <form> . . . </form>. Всем перечисленным элементам в языке JavaScript соответствуют отдельные объекты. Программы на языке JS могут обрабатывать формы непосредственно, получая значения, содержащиеся в необходимых элементах (например для проверки ввода обязательных данных). Кроме того, данные из формы обычно передаются для обработки на удаленный Web-сервер.

Синтаксис:

<form name="formName"

target="windowname"

action="serverURL"

method="get" | "post"

enctype="encodingType"

[onSubmit="handlerText"]>

</form>

Здесь атрибут name - строка, определяющая имя формы. Атрибут target задает имя окна, в котором должны обрабатываться события, связанные с изменением элементов формы. Для этого требуется наличие окна или фрейма с заданным именем. В качестве значений данного атрибута могут использоваться и зарезервированные имена _blank, _parent, _self и _top.

Атрибут action задает адрес URL сервера, который будет получать данные из формы и запускать соответствующий CGI-скрипт. Также можно послать данные из формы по электронной почте, указав при этом значения этого атрибута адрес URL типа mailto: . . .

Формы, передаваемые на сервер, требуют задания метода передачи (submission), который указывается при помощи атрибута method. Метод GET присоединяет данные формы к строке адреса URL, заданного в атрибуте action. При использовании метода POST информация из формы посылается как отдельный поток данных. В последнем случае CGI-скрипт на сервере считывает эти данные из стандартного входного потока (standard input stream). Кроме того, на сервере устанавливается переменная среды с именем QUERY_STRING, что обеспечивает еще один способ получения этих данных.

Атрибут enctype задает тип кодировки MIME (Multimedia Internet Mail Extensions) для посылаемых данных. Типом MIME по умолчанию является тип application/x-www-form-urlencoded.

К свойствам и методам формы в JavaScript-прграмме можно обратиться одним из способов:

o formName.propertyName

o formName.methodName (parameters)

o forms[i].propertyName

o forms[i].methodName (parameters)

Здесь formName соответствует атрибуту name объекта form, а i является целочисленной переменной, используемой для обращения к отдельному элементу массива forms, который соответствует определенному тегу <form> текущего документа.

Использование массива forms

К любой форме текущего гипертекстового документа можно обращаться как к элементу массива forms. Для этого необходимо указать индекс запрашиваемой формы. Например, forms[0] - первый тег <form> в текущем документе.

o document.forms[i]

o document.forms.length

o document.forms['name']

Переменная i - это индекс, соответствующий запрашиваемой форме.

Выражение вида

document.forms[i]

можно также присвоить переменной

var myForm = document.forms[i];

Теперь, если в форме имеется, к примеру, поле ввода, определенное в HTML-теге

<form>

<input type=text name=myField size=40>

. . .

</form>

то в JS-программе к этому полю позволяет обращаться переменная myForm. В частности, при помощи следующего оператора содержимое данного поля ввода присваивается новой переменной с именем result:

var result = myForm.myField.value;

Значение свойства length соответствует количеству форм в документе:

var numForms = document.forms.length

Массив forms содержит данные, которые используют только для чтения.

Свойства

Объект form имеет шесть свойств, большинство из них соответствуют атрибутам тега <form>:

o action - соответствует атрибуту action;

o elements - массив, содержащий все элементы формы;

o encoding - соответствует атрибуту enctype;

o length - количество элементов в форме;

o method - соответствует атрибуту method;

o target - соответствует атрибуту target

Массив forms имеет только одно свойство length - количество форм в документе.

Методы

Метод submit() применяется для передачи формы из JavaScript-программы. Его можно использовать вместо тега <input type=submit>, имеющегося в большинстве форм, информация которых должна передаваться на сервер.

Обработчики событий

Обработчик события onSubmit() позволяет перехватывать события, связанные с передачей данных формы. Такие события возникают либо после нажатия кнопки передачи данных, определенной тегом <input type=submit> в контейнере <form>, либо при передаче данных формы с помощью метода submit(), вызванного из JS-прграммы.

Пример

В следующем примере при нажатии кнопки передачи данных содержимое текстового поля посылается адресату по электронной почте:

 

 

Вот текст этой программы:

 

<form nethod="post"

action="mailto:webwood@chat.ru"

enctype="text/plain">

<input type="submit" value="Отправить почту">

<input type="reset" value="Очистить форму">

<textarea name="email" rows=5 cols=60>

</textarea>

</form>

Массив frames

К отдельным фреймам можно обращаться при помощи массива frames и свойства parent. Например, если имеется два фрейма, определенных в HTML-тегах:

<frameset rows="50%,50%">

<frame name="top" src="file1.htm">

<frame name="bot" src="file2.htm">

</frameset>

то для обращения к первому фрейму вы можете использовать выражение parent.frames[0], и соответственно ко второму - parent.frames[1]. Таким образом, для обращения к отдельным фреймам и к свойству length массива frames используются выражения вида:

o frameRef.frames[i]

o frameRef.frames.length

o windowRef.frames[i]

o windowRef.frames.length

Для определения количества фреймов во фреймосодержащем документе применяется свойство length. Все данные массива frames предназначены только для чтения.

Свойства

Объект frame имеет следующие свойства:

o frames - массив, содержащий все фреймы в окне;

o name - соответствует атрибуту name тега <frame>

o length - количество дочерних фреймов в родительском окне (фрейме).

Кроме того, можно использовать такие синонимы:

o parent - синоним для окна или фрейма с текущим фреймосодержащим документом;

o self - синоним для текущего фрейма;

o window - синоним для текущего фрейма.

Массив frames имеет всего одно свойство length, значением которого является количество дочерних фреймов в родительском фрейме.

Дата: 2019-02-25, просмотров: 216.