Есть ли скрытые причины использовать идентификаторы вместо атрибутов имени для идентификации полей в формах? - PullRequest
4 голосов
/ 04 октября 2011

Я работаю над крупным проектом веб-приложения, и предыдущий дизайнер предпочитал использовать идентификаторы в качестве маркеров для формирования полей над атрибутами имени.

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

Большая проблема, с которой я сейчас сталкиваюсь, заключается в том, что идентификаторы имеют глобальную область видимости.Я хочу реорганизовать большой набор имен столбцов базы данных в более стандартную схему именования, которая не включает префикс имени столбца, чтобы определить, к какой таблице принадлежит столбец.Это вызовет проблемы в тех формах, которые используют идентификаторы, поскольку идентификаторы полей соответствуют непосредственно именам столбцов.Имена столбцов, которые раньше были такими, как «zon_name» и «pro_name», теперь будут просто «name».Это приведет к появлению неуникальных идентификаторов в html.

Итак, после этой длинной преамбулы, вот мой вопрос ...

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

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

Ответы [ 3 ]

4 голосов
/ 04 октября 2011

Имя и идентификатор делают разные вещи, и, хотя есть некоторые совпадения, они не взаимозаменяемы для самых важных вещей, которые они делают.

Используйте имя

  • Чтобы определить, какой ключ будет предоставлен данным при отправке формы на сервер
  • Для создания радиогрупп
  • Из JS / CSS, когда вам нужно сослаться на несколько элементов управления формы одновременно(и при добавлении класса или использовании типа элемента более не подходит)

Использовать идентификатор

  • В атрибуте for объектаэлементы управления <label>
  • Из JS / CSS, когда вам нужно сослаться на конкретный вход

Я предполагаю, что одним из преимуществ этого является то, что поиск этого поля через Javascriptбыстрее через идентификаторы.

Незначительно (особенно если имя уникальное).

Похоже, оригинальный дизайнер не следовал стандартным соглашениям и придумалчто-то очень JavaScript декулон.

3 голосов
/ 04 октября 2011

Если вы используете формы, вы должны использовать <label for="aFormElement"> вместе с элементами формы.

Атрибут for в label соответствует атрибуту id, а не name атрибут.

Итак, вам действительно нужны оба id (для label, среди прочего) и name на стороне серверакод.

1 голос
/ 04 октября 2011

Для скорости поиска ваших элементов, вы можете установить id в форме.Затем для полей используйте name, чтобы прочитать их как:

var form = document.getElementById('theForm'),
    productName = form.productName.value;
...