Если у вас есть элемент формы внутри формы и этот элемент имеет name
или id
, вы можете получить к нему доступ непосредственно из элемента DOM формы как свойство с таким именем.Такое поведение представляется очень широко поддерживаемым.Охвачено ли оно какой-либо спецификацией, и если да, то какой?
Это поведение для elements
коллекции формы указано в спецификации HTML DOM2, но я не сразу вижубизнес выгрузки элементов как свойств в самой форме, указанной где угодно, кроме фразы "Он обеспечивает прямой доступ к элементам управления содержащейся формы, а также к атрибутам элемента формы." здесь предназначено для того, чтобы сказать это (если да, ничего себе, я понимаю, что это относится к коллекции elements
).Я предполагаю, что это просто устаревшее поведение.
Для ясности: я не спрашиваю, каков наилучший способ доступа к полям формы, я спрашиваю, охватывается ли это поведение стандартом.(Я также избегаю всего, что происходит с объектом window
; это совсем другая тема.)
Пример ( живая копия ):
HTML:
<form id="theForm">
<input type="text" name="field1" value="foo">
<input type="text" id="field2" value="bar">
</form>
JavaScript:
var f = document.getElementById("theForm");
console.log(f.elements.field1.value); // "foo", per spec
console.log(f.field1.value); // also "foo"
console.log(f.elements.field2.value); // "bar", per spec
console.log(f.field2.value); // also "bar"
Я проверил IE6, 7, 8 и 9, Firefox 4.0, Firefox 3.6, Chrome 12, Opera 11 и Safari5. Все они делают это (делают поля формы доступными в обоих местах).