Должен ли атрибут name быть уникальным в HTML-документе?


Я помню, что читал в спецификации один раз, что оба и name атрибут имеет одно и то же пространство имен и должен быть уникальным. Отныне я всегда старался выполнить это требование в своих заявках, боясь даже дать то же самое id и name к тому же элементу.

но в последнее время я начал работать с ASP.NET MVC 3, и он (как и PHP) может использовать то же самое name атрибут на нескольких входных элементах управления для формирования коллекции значений на серверный. Я попытался найти соответствующий раздел в спецификации-но не смог его найти. Возможно, я что-то неправильно понял или прочитал неправильную документацию?

как же тогда? Я хочу создать как можно более корректный HTML (как 4.01, так и 5 в разных приложениях). Могу ли я использовать этот трюк без страха? Или я нарушаю что-то и должен лучше придерживаться уникальных ценностей?

3 53

3 ответа:

The name атрибут действителен только на <form> и форма элементов (<input>,<textarea> и <select>). Он используется для указания name для связывания с парой имя / значение, которая представлена в записи формы.

например:

<input type="checkbox" name="foo" value="1" />

если проверено отправит foo=1. В DOM вы можете ссылаться на элементы формы из form.elements коллекция, указав name как индекс. Если name не является уникальным, коллекция возвращает массив элементы, а не сам элемент. Поддержка современный дом смотрит элементов формы на имя:

 document.getElementsByName(nameValue)

Примечание: он всегда возвращает массив, даже если найден только один элемент.

id атрибут из XML-мира и является уникальным идентификатором для любого узла, а не только для элементов формы. В отличие от name атрибут действителен на любом HTML узле. Также как и name атрибут, он должен следовать правилам допустимого идентификатора. Идентификатор должен начинаться с альфа, и только содержит альфа - ([a-zA-Z]), цифры, дефис, подчеркивание и двоеточия (Примечание ASP.NET нарушает это правило, начиная зарезервированные идентификаторы с подчеркивания - таким образом, они всегда будут терпеть неудачу в HTML/XML lint - на самом деле некоторые прокси лишают их). Чтобы найти любой элемент HTML по id вы используете:

document.getElementById(idvalue)

это возвращает только один узел DOM.

The name атрибут не является уникальным. Например, он используется для группировки переключателей. Она представляет значение определенного свойства формы. ids должно быть уникальным.

ID должен быть уникальным, но вы можете использовать несколько элементов формы с одинаковым именем. Это стандартно для работы переключателей, поэтому вы можете принудительно выбрать одну группу переключателей.