С точки зрения взаимодействия с пользователем, элементы input:radio
используют один и тот же [name]
, так что браузер знает, что только один может быть :checked
одновременно.
С точки зрения отправки формы любые элементы могут иметь одинаковые имена, все они будут сериализованы в строку запроса, как определено в HTML Spec
Вот пара примеров:
<form action="/foo/bar">
<input type="hidden" name="fizz" value="buzz" />
<input type="radio" name="foo" value="bar" />
<input type="radio" name="foo" value="baz" />
<input type="submit" value="Go" />
</form>
Отправка этой формы (с установленной переключателем bar
) приведет к строке запроса:
?fizz=buzz&foo=bar
Однако, если вы измените имя элемента input:hidden
на foo
:
<form action="/foo/bar">
<input type="hidden" name="foo" value="buzz" />
<input type="radio" name="foo" value="bar" />
<input type="radio" name="foo" value="baz" />
<input type="submit" value="Go" />
</form>
Строка запроса будет:
?foo=buzz&foo=bar
Сервер должен правильно проанализировать это, чтобы вы могли получить значения buzz
и bar
, однако я обнаружил, что некоторые серверные языки имеют причуды, когда дело доходит до разбора строки запроса .
В частности, PHP превратит ключи в массивы, если к ключу добавлен []
:
?foo[]=buzz&foo[]=bar
будет иметь $_GET['foo'] = array('buzz', 'bar');