Какой тип имеет свойство elements объекта form

Какой тип имеет свойство elements объекта form thumbnail

Аннотация: Рассматривается самая старая часть спецификации JavaScript – программирование HTML-форм. Разбираются различные методы обработки событий, перехват отправки данных на сервер и способы организации обмена данными при помощи форм и JavaScript-кода.

Контейнер FORM

Если рассматривать программирование на JavaScript в исторической перспективе, то первыми объектами, для которых были разработаны методы и свойства, стали поля форм. Обычно контейнер FORM и поля форм именованы:

<FORM NAME=fname METHOD=get>
<INPUT NAME=iname SIZE=30 MAXLENGTH=30>
</FORM>

Поэтому в программах на JavaScript к ним обращаются по имени:

document.fname.iname.value=”Текст”;

Того же эффекта можно достичь, используя коллекции форм и элементов, обращаясь к форме и к элементу либо по индексу, либо по имени:

document.forms[0].elements[0].value=”Текст”;
document.forms[‘fname’].elements[‘iname’].value=”Текст”;

Рассмотрим подробнее объект Form, который соответствует контейнеру FORM. Его свойства, методы и события используются для задания реакции на действия пользователя, например, изменения значений полей или нажатие кнопок.

Свойства, методы и события объекта  Form

СвойстваМетодыСобытия
length
action
method
target
encoding
elements[]
reset()
submit()
Reset
Submit

Свойства объекта Form

Свойство action

Свойство action отвечает за вызов CGI-скрипта. В нем указывается URL этого скрипта. Но там, где можно указать URL, можно указать и его схему javascript:, например:

<FORM METHOD=post ACTION=”javascript: alert(‘Работает!’);”>
<INPUT TYPE=submit VALUE=”Продемонстрировать JavaScript в ACTION”>
</FORM>

Обратите внимание на тот факт, что в контейнере FORM указан атрибут METHOD. В данном случае это сделано для того, чтобы к URL, заданному в атрибуте ACTION, не дописывался символ ” ?”. Дело в том, что методом доступа по умолчанию является метод GET. В этом методе при обращении к ресурсу из формы создается элемент URL под названием search. Этот элемент предваряется символом ” ?”, который дописывается в конец URL скрипта. В нашем случае это привело бы к неправильной работе JavaScript-кода, поскольку конструкция вида

провоцирует ошибку JavaScript. Метод POST передает данные формы скрипту в теле HTTP-сообщения, поэтому символ ” ?” не добавляется к URL, и ошибка не генерируется. При этом применение void(0) отменяет перезагрузку документа, и браузер не генерирует событие Submit, т.е. не обращается к серверу при нажатии на кнопку, как это было бы при стандартной обработке формы.

Свойство method

Свойство method определяет метод доступа к ресурсам HTTP-сервера из программы-браузера. В зависимости от того, как автор HTML-страницы собирается получать и обрабатывать данные из формы, он может выбрать тот или иной метод доступа. На практике чаще всего используются методы GET и POST.

JavaScript-программа может изменить значение этого свойства. В предыдущем разделе метод доступа в форме был указан явно. Теперь мы его переопределим в момент исполнения программы:

<FORM NAME=f ACTION=”javascript: alert(‘Работает!’);”>
<SCRIPT>
document.write(‘По умолчанию установлен метод: ‘+document.f.method+’.<BR>’);
</SCRIPT>
<INPUT TYPE=button onClick=”document.f.method=’post'” VALUE=”Сменить метод на POST”>
<INPUT TYPE=button onClick=”document.f.method=’get'” VALUE=”Сменить метод на GET”><BR>
<INPUT TYPE=submit VALUE=”JavaScript в ACTION”>
</FORM>

5.1.
Изменение метода формы (GET и POST) скриптом

По умолчанию установлен метод GET.

В данном примере стоит обратить внимание на два момента:

  1. Прежде чем открывать окно предупреждения, следует нажать кнопку “Метод POST”. Если этого не сделать, то появится сообщение об ошибке JavaScript. Здесь все выглядит достаточно логично. Формирование URL происходит при генерации события submit, а вызов скрипта – после того, как событие сгенерировано. Поэтому вставить переопределение метода в обработчик события нельзя, так как к этому моменту будет уже сгенерирован URL, который, в свою очередь, будет JavaScript-программой с символом ” ?” на конце. Переопределение метода должно быть выполнено раньше, чем произойдет событие Submit.
  2. В тело документа через контейнер SCRIPT встроен JavaScript-код, который сообщает метод доступа, установленный в форме по умолчанию. Этот контейнер расположен сразу за контейнером FORM. Ставить его перед контейнером FORM нельзя, так как в момент получения интерпретатором управления объект FORM не будет создан, и, следовательно, работать с его свойствами не представляется возможным.

Никаких других особенностей свойство method не имеет. В данном свойстве можно указать и другие методы доступа, отличные от GET и POST, но это требует дополнительной настройки сервера.

Свойство target

Свойство target определяет имя окна, в которое следует загружать результат обращения к CGI-скрипту. При этом всегда есть альтернативы: можно использовать значение этого свойства внутри JavaScript-программ для указания окна или фрейма, куда требуется загружать результат работы CGI-скрипта, а можно получить идентификатор окна или задействовать встроенный массив frames[0] и свойства окна opener, top и parent. Кроме того, для загрузки внешнего файла в некоторое окно или фрейм можно также применить метод window.open(). Все эти варианты будут продемонстрированы в разделе “Передача данных во фрейм”.

Свойство encoding

Свойство encoding объекта Form (а также атрибут enctype контейнера FORM ) задает, каким образом данные из формы должны быть закодированы перед их отправкой на сервер. Возможные значения:

Значения свойства encoding объекта Form

ЗначениеОписание
application/x-www-form-urlencodedЭто значение по умолчанию. Означает, что в данных, передаваемых на сервер, пробелы заменяются на “+”, а специальные символы заменяются на их 16-ричное ASCII значение, например, буква Щ заменяется на %D0%A9.
text/plainПробелы заменяются на “+”, но специальные символы не кодируются (передаются как есть).
multipart/form-dataНикакие символы не кодируются (они передаются как есть). Данное значение необходимо указывать, если в форме имеются элементы отправки файлов: <INPUT TYPE=file>.
Коллекция elements[]

При генерации встроенного в документ объекта Form браузер создает и связанный с ним массив ( коллекцию ) полей формы elements[]. Обычно к полям обращаются по имени, но можно обращаться и по индексу массива полей формы:

<FORM NAME=f>
<INPUT NAME=e SIZE=40>
<BR><INPUT TYPE=button VALUE=”Ввести текст по имени элемента”
onClick=”document.f.e.value=’Текст введен по имени элемента’;”>
<BR><INPUT TYPE=button VALUE=”Ввести текст по индексу элемента”
onClick=”document.f.elements[0].value=’Текст введен по индексу элемента’;”>
<BR><INPUT TYPE=reset VALUE=”Очистить”>
</FORM>

Индексирование полей в массиве начинается с нуля. Общее число полей в форме f доступно двумя способами: как свойство массива document.f.elements.length и как свойство объекта формы: document.f.length.

Методы объекта Form

Метод submit()

Метод submit() позволяет проинициировать передачу введенных в форму данных на сервер:

<FORM NAME=f ACTION=”https://www.intuit.ru/rating_students/”>
Ваше имя пользователя на intuit:<INPUT NAME=query>
</FORM>
<A HREF=”javascript:document.f.submit();”>Посмотреть рейтинг</A>

Как видите, кнопки отправки ( submit ) у формы нет, но нажав на ссылку, мы выполняем отправку данных на сервер. Обычно при такой “скрытой” отправке данных на сервер браузеры, в целях безопасности, запрашивают подтверждение, действительно ли пользователь желает отправить данные. Отправка данных путем вызова метода submit() имеет отличия от нажатия пользователем кнопки INPUT типа TYPE=submit ; их мы рассмотрим в конце лекции.

Метод reset()

Метод reset() (не путать с обработчиком события onReset, рассматриваемым ниже) позволяет восстановить значения полей формы, заданные по умолчанию. Другими словами, вызов метода reset() равносилен нажатию на кнопку INPUT типа TYPE=reset, но при этом саму эту кнопку создавать не требуется.

<FORM NAME=f>
<INPUT VALUE=”Значение по умолчанию” SIZE=30>
<INPUT TYPE=button VALUE=”Изменим текст в поле ввода”
onClick=”document.f.elements[0].value=’Изменили текст’;”>
</FORM>
<A HREF=”javascript:document.f.reset();void(0);”>
Установили значение по умолчанию</A>

В данном примере если кликнуть по гипертекстовой ссылке, то в форме происходит восстановление значений полей по умолчанию.

События объекта Form

Событие Submit

Событие Submit возникает (и соответствующий обработчик события onSubmit вызывается) при нажатии пользователем на кнопку типа submit или при выполнении метода submit(). Действие по умолчанию, которое выполняет браузер при возникновении этого события – отправка введенных в поля формы данных на сервер, указанный в атрибуте ACTION, с помощью метода, указанного в атрибуте METHOD, с использованием способа кодирования, указанного в атрибуте ENCTYPE, и с указанием того, что результаты работы CGI-скрипта должны быть показаны в окне или фрейме с именем, указанным в атрибуте TARGET.

Фукцию обработки этого события можно переопределить и даже вовсе отменить. Для этой цели введен атрибут onSubmit=”код_программы” у контейнера <FORM>. В нем можно указать действия (JavaScript-код), какие должны выполняться при возникновении этого события. Порядок выполнения этих действий и действий браузера, а также использование оператора return false для отмены последних, полностью аналогичны тем, что описаны ниже для onReset. Пример:

<SCRIPT>
function TestBeforeSend()
{
if(document.f.query.value==”)
{
alert(‘Пустую строку не принимаем!’);
return false;
}
else return true;
}
</SCRIPT>

<FORM NAME=f METHOD=post onSubmit=”return TestBeforeSend();”
ACTION=”https://www.intuit.ru/rating_students/”>
Ваше имя пользователя на intuit:<INPUT NAME=query>
<INPUT TYPE=submit VALUE=”Посмотреть рейтинг”>
</FORM>

В этом примере следует обратить внимание на конструкцию return TestBeforeSend(). Сама функция TestBeforeSend() возвращает значения true или false. Соответственно, данные либо отправляются на сервер, либо нет.

Событие Reset

Событие Reset возникает (и соответствующий обработчик события onReset вызывается) при нажатии пользователем на кнопку типа reset или при выполнении метода reset(). Действие по умолчанию, которое выполняет браузер при возникновении этого события – восстановление значений по умолчанию в полях формы. Однако функцию обработки этого события можно переопределить и даже вовсе отменить. Для этой цели введен атрибут onReset=”код_программы” у контейнера <FORM>. В нем можно указать действия (JavaScript-код), какие должны выполняться при возникновении этого события. Браузер сначала выполняет эти действия, а затем – свое действие по умолчанию. Но если последним оператором в обработчике onReset будет return false, то действие браузера по умолчанию выполняться не будет. Этот прием называется перехватом события. Пример:

<FORM onReset=”javascript: alert(‘Не дадим восстановить!’);return false;”>
<INPUT VALUE=”Измените этот текст” SIZE=30>
<INPUT TYPE=reset VALUE=”Восстановить”>
</FORM>

Здесь команда return false предотвратила восстановление значения поля. Команда return true, равно как и отсутствие оператора return, позволило бы браузеру продолжить обработку события – и восстановить значение поля.

Источник

Главная / Интернет-технологии /
Основы программирования на JavaScript / Тест 3

Упражнение 1:

Номер 1

Для чего служат формы?

Ответ:

&nbsp(1)
cлужат для сбора данных пользователя и отправки их Web-серверу&nbsp

&nbsp(2)
cлужат для сбора данных пользователя и отправки их Web-обозревателю&nbsp

&nbsp(3)
служат для представления данных пользователя в виде таблицы&nbsp

Номер 2

Что представляют собой формы?

Ответ:

&nbsp(1)
набор из элементов управления, размещаемых на Web-странице&nbsp

&nbsp(2)
аналогичны диалоговым окнам Windows&nbsp

&nbsp(3)
обычные web-страницы&nbsp

Какой тип имеет свойство elements объекта form

Номер 3

Чем задается поле ввода на форме?

Ответ:

&nbsp(1)
посредством одинарного тега <INPUT TYPE=”text”>&nbsp

&nbsp(2)
посредством одинарного тега <INPUT TYPE=”button”>&nbsp

&nbsp(3)
посредством одинарного тега <INPUT TYPE=”reset”>&nbsp

Упражнение 2:

Номер 2

Что из перечисленных ниже вариантов относится к обработчикам событий?

Ответ:

&nbsp(1)
onFocus&nbsp

&nbsp(2)
onBlur&nbsp

&nbsp(3)
onMouseOver&nbsp

Номер 3

Что выполняет следующий фрагмент кода?
<FORM>
<TEXTAREA NAME=”name” COLS=30 ROWS=5 WRAP=VIRTUAL onBlur=”getname(this.value)”>
Введите любой текст
</TEXTAREA>
</FORM>

Ответ:

&nbsp(1)
создает текстовое поле и при смене фокуса ввода передает из него значение функции getname()&nbsp

&nbsp(2)
создает текстовое поле и при наведении на него курсора передает его значение функции getname()&nbsp

&nbsp(3)
создает текстовое поле и при клике мыши передает его значение функции getname()&nbsp

Упражнение 3:

Номер 1

Найдите ошибку
<script>
function newcolor(color)
{
document.bgColor=color
}
</script>
<FORM>
<INPUT TYPE=”button” VALUE=”Голубой” onClick=”newcolor(‘lightblue’)”>
<INPUT TYPE=”button” VALUE=”Розовый” onClick=”newcolor(‘pink’)”>
</FORM>

Ответ:

&nbsp(1)
неверно описана функция (нет символа “;”)&nbsp

&nbsp(2)
неверно передается параметр функции&nbsp

&nbsp(3)
ошибки нет&nbsp

Номер 2

Найдите ошибку
<script>
function newcolor(color) { document.bgColor=color }
</script>
<FORM>
<INPUT TYPE=”button” VALUE=”Голубой” onClick=”newcolor(‘lightblue’)”>
<INPUT TYPE=”button” VALUE=”Розовый” onClick=”newcolor(‘pink’)”>
</FORM>

Ответ:

&nbsp(1)
нельзя описывать функцию одной строкой&nbsp

&nbsp(2)
неверно передается параметр функции&nbsp

&nbsp(3)
ошибки нет&nbsp

Номер 3

Найдите ошибку
<script>
function newcolor(color)
{
document.bgColor=color;
}
</script>
<FORM>
<INPUT TYPE=”button” VALUE=”Голубой” onClick=”newcolor(“lightblue”);”>
<INPUT TYPE=”button” VALUE=”Розовый” onClick=”newcolor(“pink”);”>
</FORM>

Ответ:

&nbsp(1)
неверно описана функция&nbsp

&nbsp(2)
неверно передается параметр функции&nbsp

&nbsp(3)
ошибки нет&nbsp

Упражнение 4:

Номер 1

Каким образом можно обратиться к элементу формы?

Ответ:

&nbsp(1)
по имени (document.form_name.element.name.property)&nbsp

&nbsp(2)
по индексу (document.forms[n].elements[n].property)&nbsp

&nbsp(3)
используя метод (document.form.method())&nbsp

Номер 3

Какой тип имеет свойство elements объекта Form?

Ответ:

&nbsp(1)
массив&nbsp

&nbsp(2)
скаляр&nbsp

&nbsp(3)
такого свойства нет&nbsp

Упражнение 5:

Номер 2

Каким из перечисленных способов можно отправить данные из формы на сервер?

Ответ:

&nbsp(1)
по кнопке Submit&nbsp

&nbsp(2)
методом submit&nbsp

&nbsp(3)
по событию Send&nbsp

Номер 3

Можно ли полностью перехватить и обработать JavaScript-функцией событие Submit (отправку данных на сервер)?

Ответ:

&nbsp(1)
да&nbsp

&nbsp(2)
нет&nbsp

Упражнение 6:

Номер 1

Что называется циклом?

Ответ:

&nbsp(1)
множество данных, размещенных в одной переменной&nbsp

&nbsp(2)
средство организации повторяющихся операций&nbsp

&nbsp(3)
ошибка, при которой программа повторяется бесконечное количество раз&nbsp

Упражнение 7:

Номер 1

Что задает выражение i=12 в синтаксисе оператора for?

Ответ:

&nbsp(1)
задает конечное значение переменной, управляющей циклом&nbsp

&nbsp(2)
задает начальное значение переменной, управляющей циклом&nbsp

&nbsp(3)
задает шаг приращения переменной, управляющей циклом&nbsp

Номер 2

Что задает условие i>=4 в синтаксисе оператора for?

Ответ:

&nbsp(1)
задает начальное значение переменной, управляющей циклом&nbsp

&nbsp(2)
условие, определяющее, сколько в цикле будет повторений&nbsp

&nbsp(3)
задает шаг приращения переменной, управляющей циклом&nbsp

Номер 3

Что задает условие i<4 в синтаксисе оператора for?

Ответ:

&nbsp(1)
задает начальное значение переменной, управляющей циклом&nbsp

&nbsp(2)
условие, определяющее, сколько в цикле будет повторений&nbsp

&nbsp(3)
задает шаг приращения переменной, управляющей циклом&nbsp

Упражнение 8:

Номер 1

Каково будет значение переменной j после выполнения приведенного JavaScript кода?

var i = 0; j = 0;
for (i = 1; i <= 5; i++) {
j–;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
-5
&nbsp

&nbsp(3)
5
&nbsp

&nbsp(4)
-6
&nbsp

&nbsp(5)
6
&nbsp

Номер 2

Каково будет значение переменной j после выполнения приведенного JavaScript кода?

var i = 0; j = 0;
for (i = 1; i <= 3; i++) {
j+=i;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
5
&nbsp

&nbsp(3)
-6
&nbsp

&nbsp(4)
6
&nbsp

Номер 3

Каково будет значение переменной j после выполнения приведенного JavaScript кода?

var i = 0; j = 0;
for (i = 1; i <= 2; i++) {
j-=2;
}

Ответ:

&nbsp(1)
-6&nbsp

&nbsp(2)
6&nbsp

&nbsp(3)
4&nbsp

&nbsp(4)
-2&nbsp

&nbsp(5)
-4&nbsp

Упражнение 9:

Номер 1

Каково будет значение переменной i после выполнения приведенного JavaScript кода?

var i = 0;
while (i <= 10)
{
i+=5;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
5
&nbsp

&nbsp(3)
15
&nbsp

Номер 2

Каково будет значение переменной i после выполнения приведенного JavaScript кода?

var i = 5;
while (i > 0)
{
i=5-i;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
5
&nbsp

&nbsp(3)
15
&nbsp

Номер 3

Каково будет значение переменной i после выполнения приведенного JavaScript кода?

var i = 1;
while (i <= 5)
{
alert(i);
i+=5;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
6
&nbsp

&nbsp(3)
1
&nbsp

Упражнение 10:

Номер 1

В какой строке JavaScript-кода допущена ошибка?

var j = 0;
for (int var i = 0; i <= 10; i++); {
j += 1;
}
document.write(j);

Ответ:

&nbsp(1)
1
&nbsp

&nbsp(2)
2
&nbsp

&nbsp(3)
3
&nbsp

&nbsp(4)
4
&nbsp

Номер 2

В какой строке JavaScript-кода допущена ошибка?

for (var j = 0; i <= 10; i++) {
j += 1;
}
document.write(j);

Ответ:

&nbsp(1)
1
&nbsp

&nbsp(2)
2
&nbsp

&nbsp(3)
3
&nbsp

&nbsp(4)
4
&nbsp

Номер 3

В какой строке JavaScript-кода допущена ошибка?

for (var i = 0; i <= 10; i++) {
var j += 1;
}

Ответ:

&nbsp(1)
1
&nbsp

&nbsp(2)
2
&nbsp

&nbsp(3)
3
&nbsp

&nbsp(4)
ошибки нет
&nbsp

Упражнение 11:

Номер 1

Каково будет значение переменной j после выполнения приведенного JavaScript кода?

var j = 0;
for (var i = 0; i < 2; i++) {
j=i;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
1
&nbsp

&nbsp(3)
2
&nbsp

Номер 2

Каково будет значение переменной j после выполнения приведенного JavaScript кода?

var j = 0;
for (var i = 0; i < 2; i++) {
j-=j*i;
}

document.write(j);

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
1
&nbsp

&nbsp(3)
2
&nbsp

Номер 3

Каково будет значение переменной j после выполнения приведенного JavaScript кода?

var j = 0;
for (var i = 0; i <= 1; i++) {
j-=j+i;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
-1
&nbsp

&nbsp(3)
1
&nbsp

Упражнение 12:

Номер 1

Каково будет значение переменной i после выполнения приведенного JavaScript кода?

var i = 1;
while (i <= 2)
{
i+=5;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
6
&nbsp

&nbsp(3)
1
&nbsp

Номер 2

Каково будет значение переменной i после выполнения приведенного JavaScript кода?

var i = 1;
while (i <= 2)
{
i*=5;
}

Ответ:

&nbsp(1)
0
&nbsp

&nbsp(2)
1
&nbsp

&nbsp(3)
5
&nbsp

Номер 3

Каково будет значение переменной i после выполнения приведенного JavaScript кода?
var i = 2;
while (i <= 2)
{
i=i*i;
}

Ответ:

&nbsp(1)
2
&nbsp

&nbsp(2)
4
&nbsp

&nbsp(3)
8
&nbsp

Какой тип имеет свойство elements объекта form

Источник