Навигация и свойства элементов формы
Элементы управления, такие как <form>, <input> и другие имеют большое количество своих важных свойств и ссылок.
Элементы FORM можно получить по имени или номеру, используя свойство document.forms[name/index]
document.forms.my - форма с именем 'my' document.forms[0] - первая форма в документе
Любой элемент формы form можно получить аналогичным образом, используя свойство form.elements.
Может быть несколько элементов с одинаковым именем. В таком случае form.elements[name]вернет коллекцию элементов
<form>
<input type="radio" name="age" value="10">
<input type="radio" name="age" value="20">
</form>
let form = document.forms[0];
let elems = form.elements.age;
console.log(elems[0].value); // 10, первый inputПо элементу можно получить его форму, используя свойство element.form
<form>
<input type="text" name="surname">
</form>
let form = document.forms[0];
let elem = form.elements.surname;
console.log(elem.form == form); // trueЭлемент label – один из самых важных в формах.
Клик на label засчитывается как фокусировка или клик на элементе формы, к которому он относится.
Есть два способа показать, какой элемент относится к label
1. Дать метке атрибут for, равный id соответствующего input
<table>
<tr>
<td>
<label for="agree">Согласен с правилами</label>
</td>
<td>
<input id="agree" type="checkbox">
</td>
</tr>
<tr>
<td>
<label for="not-a-robot">Я не робот</label>
</td>
<td>
<input id="not-a-robot" type="checkbox">
</td>
</tr>
</table>2. Завернуть элемент в label. В этом случае можно обойтись без дополнительных атрибутов:
<label>Кликни меня <input type="checkbox"></label>Для большинства типов input значение ставится/читается через свойство value.
input.value = "Новое значение";
textarea.value = "Новый текст";Исключения – input type="checkbox" и input type="radio"
Текущее «отмеченное» состояние для checkbox и radio находится в свойстве checked(true/false).
if (input.checked) {
console.log( "Чекбокс выбран" );
}Селект в JavaScript можно установить двумя путями: поставив значение select.value, либо установив свойство select.selectedIndex в номер нужной опции.
Установка selectedIndex = -1 очистит выбор.
Список элементов-опций доступен через select.options
select.selectedIndex = 0; // первая опцияЕсли select допускает множественный выбор (атрибут multiple), то значения можно получить/установить, сделав цикл по select.options. При этом выбранные опции будут иметь свойство option.selected = true.
<form name="form">
<select name="genre" multiple>
<option value="blues" selected>Мягкий блюз</option>
<option value="rock" selected>Жёсткий рок</option>
<option value="classic">Классика</option>
</select>
</form>
<script>
let form = document.forms[0];
let select = form.elements.genre;
for (var i = 0; i < select.options.length; i++) {
let option = select.options[i];
if(option.selected) {
console.log( option.value );
}
}
</script>Событие focus вызывается тогда, когда пользователь фокусируется на элементе, а blur – когда фокус исчезает, например посетитель кликает на другом месте экрана.
<style> .error { border-color: red; } </style>
Введите ваш возраст: <input type="text" id="input">
<div id="error"></div>
<script>
input.onblur = function() {
if (isNaN(this.value)) { // введено не число
// показать ошибку
this.className = "error";
error.innerHTML = 'Вы ввели не число. Исправьте, пожалуйста.'
}
};
input.onfocus = function() {
if (this.className == 'error') {
// сбросить состояние "ошибка", если оно есть
this.className = "";
error.innerHTML = "";
}
};
</script>