Работа с формами

Формы и их элементы

Последнее обновление: 1.11.2015

Один из способов взаимодействия с пользователями представляют html-формы. Например, если нам надо получить от пользователя некоторую информацию, мы можем определить на веб-странице формы, которая будет содержать текстовые поля для ввода информации и кнопку для отправки. И после ввода данных мы можем обработать введенную информацию.

Для создания формы используется элемент <form>:

<form name="search">
</form>

В JavaScript форма представлена объектом HtmlFormElement. И после создания формы мы можем к ней обратиться различными способами.

Первый способ заключается в прямом обращении по имени формы:

var searchForm = document.search;

Второй способ состоит в обращении к коллекции форм документа и поиске в ней нужной формы:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
</head>
<body>
<form name="search"></form>
<form name="settings"></form>
<script>
var searchForm;
for (var i = 0; i < document.forms.length; i++) {

	if(document.forms[i].name==="search")
		searchForm = document.forms[i];
}
document.write(searchForm.name);
</script>
</body>
</html>

С помощью свойства name объекта формы мы можем получить значение атрибута name у соответствующего элемента формы в коде html.

Еще один способ сочетает оба подхода:

var searchForm = document.forms["search"];

И также можно применять стандартные способы для поиска элемента формы, например, по id, по тегу или по селектору. Например:

var searchForm = document.getElementsByTagname("form")[0]

Форма имеет ряд свойств, из которых наиболее важными являются вышерассмотренное свойство name, а также свойство elements, которое содержит коллекцию элементов формы:

<form name="search">
	<input type="text" name="key"></input>
	<input type="submit" name="send"></input>
</form>
<script>
var searchForm = document.forms["search"];
for(var i=0; i<searchForm.elements.length;i++)
	document.write(searchForm.elements[i].name + "<br/>");
</script>
Получение элементов формы в JavaScript

Среди методов формы надо отметить метод submit(), который отправляет данные формы на сервер, и метод reset(), который очищает поля формы:

var searchForm = document.forms["search"];
searchForm.submit();
searchForm.reset();

Элементы форм

Форма может содержать различные элементы ввода html: input, textarea, button, select и т.д. Но все они имеют ряд общих свойств и методов.

Также, как и форма, элементы форм имеют свойство name, с помощью которого можно получить значение атрибута name:

<form name="search">
	<input type="text" name="key" value="hello world"></input>
	<input type="submit" name="send"></input>
</form>
<script>
var searchForm = document.forms["search"];
// выведем имя всех элементов
for(var i=0; i<searchForm.elements.length;i++)
	document.write(searchForm.elements[i].name + "<br/>");
	
// получим по имени текстовое поле
var keyBox = searchForm.elements["key"];
document.write(keyBox.name); // key
</script>

Другим важным свойством является свойство value, которое позволяет получить или изменить значение поля:

var searchForm = document.forms["search"];
var keyBox = searchForm.elements["key"];
document.write(keyBox.value); // hello world
// установка значения
keyBox.value = "Привет мир";

С помощью свойства form можно получить родительский объект формы:

var searchForm = document.forms["search"];
var keyBox = searchForm.elements["key"];
document.write(keyBox.form.name); // search

Данное свойство может быть полезно, например, при отправке формы, когда перед непосредственной отправкой формы необходимо провести валидацию всех полей формы.

Свойство type позволяет получить тип поля ввода. Это либо название тега элемента (например, textarea), либо значение атрибута type у элементов input.

Из методов можно выделить методы focus() (устанавливает фокус на элемент) и blur() (убирает фокус с элемента):

var searchForm = document.forms["search"];
var keyBox = searchForm.elements["key"];
keyBox.focus();
Помощь сайту
WebMoney
  • P378451176208
  • Z280152397659
ЮMoney/Яндекс-Деньги
  • 410011174743222
PayPal
  • metanit22@mail.ru
Перевод на карту
  • Номер карты: 4048415020898850