Излишне ли использовать атрибут «имя» для полей ввода в современной веб-разработке? - PullRequest
5 голосов
/ 28 ноября 2009

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

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

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

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

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


РЕДАКТИРОВАТЬ: В частности, можно ли было бы избежать использования этого атрибута с полями ввода типа «текст» (когда нет стилей или целей написания сценариев)?


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

Ответы [ 5 ]

5 голосов
/ 28 ноября 2009

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

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

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

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

источник

3 голосов
/ 28 ноября 2009

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

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, хотя оба были определены.

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

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

2 голосов
/ 28 ноября 2009

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

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

1 голос
/ 15 января 2015

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

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

Если что, name, похоже, возвращается.

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

0 голосов
/ 28 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...