Излишне ли использовать & # 8220; name & # 8221; атрибут для полей ввода в современной веб-разработке?

StackOverflow https://stackoverflow.com/questions/1813085

  •  06-07-2019
  •  | 
  •  

Вопрос

Я заметил много сайтов с формами, содержащими поля ввода, чье " имя " атрибут указывается, даже если он не используется для стилизации или написания сценариев!

Более того, согласно официальному документу о форме в HTML-документе ...

  

name = cdata [CI] Имена этого атрибута   элемент, так что он может быть передан   из таблиц стилей или сценариев. Заметка.   Этот атрибут был включен для   обратная совместимость. Приложения   следует использовать атрибут id для   идентифицировать элементы.

Итак, мой вопрос: должен ли этот атрибут использоваться только для стилизации и написания сценариев?

Заранее спасибо!

<Ч>

РЕДАКТИРОВАТЬ . В частности, можно избежать использования этого атрибута с полями ввода " text " тип (когда нет стилей или целей написания сценариев)? <Ч>

РЕДАКТИРОВАТЬ 2: Итак, вы почти подтвердили то, о чем я думал: " имя " атрибут будет устаревшим в дальнейших спецификациях / стандартах HTML !!! ??? Он все еще "жив" только для обратной совместимости ... в некоторых случаях можно избежать, но все же есть некоторые случаи (например, переключатель), где это необходимо!

Это было полезно?

Решение

Атрибут name - это нотация для ссылки на определенные элементы в рамках веб-страницы через JavaScript, не являющийся DOM:

document.forms['your_form'].elements['aa']

Атрибут id для элемента должен быть установлен с тем же значением, чтобы сработало следующее:

document.getElementById('aa')

Насколько я понимаю, когда Netscape создавал Javascript, он использовал атрибут name . Спецификация HTML, однако, решила использовать id , но сохранила name для обратной совместимости. IME, использование атрибута name было необходимо для поддержки Internet Explorer 6, поскольку движок JavaScript в IE не считывал атрибут id - только name хотя оба были определены.

  

... можно было бы избежать использования этого атрибута с полями ввода " text " тип (когда нет стилей или целей написания сценариев)?

Если у вас нет javascript-кода, прикрепленного к текстовым полям, да - они будут ненужными.

Другие советы

Я думаю, вы обнаружите, что почти на каждом сайте будут входные данные с атрибутом name. Я не вижу, чтобы это исчезло в ближайшее время.

  

Атрибут name указывает имя   для элемента ввода.

     

Атрибут name используется для идентификации   данные формы после того, как они были представлены   на сервер или в справочную форму   данные с использованием JavaScript на клиенте   сторона.      

Примечание. Только элементы формы с именем   атрибут будет иметь свои значения   передается при отправке формы.

source

Существуют различия между атрибутами id и name. Идентификатор применим к любому элементу документа HTML, а имя относится только к полям ввода. Стандарт требуется, чтобы идентификатор был уникальным на странице (хотя не обязательно следует на всех веб-страницах). Различные элементы могут иметь одно и то же имя. Вспоминается один конкретный случай - радио-кнопка. Все переключатели должны иметь одинаковые имена, а значение выбранной будет возвращено в форму. Таким образом, вы можете видеть, что имя по-прежнему имеет значение в обработке HTML-форм.

Я видел в системах автоматической генерации HTML-форм (например, zope.formlib ), что Атрибуты id и name автоматически генерируются для разных типов входных виджетов. Такие системы автоматической генерации форм должным образом учитывают все нюансы, связанные с различиями в атрибутах id и name. Они также делают такие вещи, как генерация скрытого элемента ввода для каждого элемента флажка. Поэтому, где это возможно, я стараюсь использовать какой-то механизм автоматического генерирования HTML-форм и позволяю ему решать возникающие проблемы.

Это старый вопрос, но стоит отметить, что многие современные JS-фреймворки используют атрибут name . В частности, serialize функция jQuery:

  

Чтобы значение элемента формы было включено в сериализованную строку, элемент должен иметь атрибут name.

Во всяком случае, name , похоже, возвращается.

Также стоит отметить, что атрибут name полезен, потому что он имеет немного больше " scope " чем id . id должен быть уникальным на странице, но одно и то же name может использоваться несколько раз. Это делает его полезным, когда у вас есть несколько форм на одной странице, или когда вы хотите сослаться на группу флажков и т. Д.

Более старые браузеры IIRC используют имя вместо идентификатора, поэтому оно обычно включается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top