для Epic Skills
Зачем нужен атрибут name?
|
HTML
<form id="my-form">...</form>
|
HTML
<form name="my-form">...</form>
|
|
JavaScript
document.getElementById("my-form");
|
JavaScript
document.forms["my-form"];document.forms[0];
|
Без name |
С name |
Свойство формы elements содержит коллекцию всех значащих элементов
|
HTML
<form name="form"><input name="text-input" type="text"></form>
|
JavaScript
var form = document.forms.form;
form.elements["text-input"];
form.elements[0];
|
Элементы формы с потомками так же имеют свойство elements
|
HTML
<form name="form"> <fieldset name="fieldset"> <input name="text-input" type="text"> </fieldset></form>
|
JavaScript
var form = document.forms.form;var fields = form.elements.fieldset;fields.elements["text-input"];
|
Получить доступ к элементам формы можно не только через form.elements[name/index], но и проще: form[index/name].
Этот способ короче, но обладает одной неприятной особенностью: если к элементу обратиться по его name, а потом свойство name изменить, то он по-прежнему будет доступен под старым именем.
Элементы формы ссылаются на свою форму через свойство form
|
HTML
<form> <fieldset name="fieldset"> <input id="input" type="text"> </fieldset></form>
|
JavaScript
var input = document.getElementById("input");input.form;
|
Текущее значение элемента формы можно получить через свойство value
|
HTML
<form name="form"> <fieldset name="fieldset"> <input name="input" type="text"> </fieldset></form>
|
JavaScript
document.forms[0].elements.input.value;
|
Свойство value элемента select соответствует свойству value выбранного в данный момент элемента option
|
HTML
<form name="form"> <select name="select"> <option value="0"> First option </option> </select></form>
|
JavaScript
document.forms[0].elements.select.value;
|
Свойство selectedIndex элемента select указывает на позицию в списке выбранного в данный момент элемента option
|
HTML
<select name="select"> <option value="0"> First option </option></select> |
JavaScript
var s = document.forms[0].elements.select;
s.selectedIndex;
|
Установка selectedIndex = -1 очистит выбор.
Список всех опций select можно получить через его свойство options
|
HTML
<select name="select"> <option value="0"> First option </option> <option value="1"> Second option </option></select> |
JavaScript
var s = document.forms[0].elements.select;
s.options;
|
Новую опцию можно создать с помощью конструктора new Option. Добавить опцию в select можно методом add.
|
JavaScript
var s = document.forms[0].elements.select;var opt = new Option(text, value, dafaultSelected, selected);var opt = new Option("Text", 123, false, true);s.add(opt, index);s.add(opt, 2);
|
Значение поля checkbox можно забрать через свойство checked
|
HTML
<input type="checkbox" name="checkbox" checked> |
JavaScript
var c = document.forms[0].elements.checkbox;
c.checked;
|
Значение radio можно забрать через свойство value
|
HTML
<input type="radio" name="radio" value="1"><input type="radio" name="radio" value="2"><input type="radio" name="radio" value="3"> |
JavaScript
var c = document.forms[0].elements.radio;
c.value;
|
Фокус на полях можно не только слушать, но и принудительно выставлять
|
HTML
<input type="text" name="input">
|
JavaScript
var text = document.forms[0].elements.input;text.addEventListener("focus", function(e){ console.log("focus");}, true);text.focus();
|
Фокус точно также можно и убирать
|
HTML
<input type="text" name="input" autofocus>
|
JavaScript
var text = document.forms[0].elements.input;text.addEventListener("blur", function(e){ console.log("blur");}, true);text.blur();
|
Кстати, текущий элемент, на котором фокус, доступен как document.activeElement.
Событие change происходит по окончании изменении значения элемента формы, когда это изменение зафиксировано.
|
HTML
<input type="text" name="input">
|
JavaScript
var text = document.forms[0].elements.input;text.addEventListener("change", function(e){ console.log("change");});
|
Событие input срабатывает тут же при изменении значения текстового элемента.
|
HTML
<input type="text" name="input">
|
JavaScript
var text = document.forms[0].elements.input;text.addEventListener("input", function(e){ console.log("input");}); |
Событие change происходит по окончании изменении значения элемента формы, когда это изменение зафиксировано.
|
JavaScript
var text = document.forms[0].elements.input;var events = ["copy", "paste", "cut"];for (var i = 0, len = events.length; i < len; i++) { text.addEventListener(events[i], function(event) { event.preventDefault(); });} |
Чтобы отправить форму на сервер, можно либо нажать кнопку <input type="submit"> или <input type="image">, либо нажать Enter, находясь на каком-нибудь поле.
|
HTML
<form name="form"><input name="text-input" type="text"></form>
|
JavaScript
var form = document.forms[0];text.addEventListener("submit", function(e){ console.log("submit");});form.submit();
|