Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. HTML
  3. Справка по HTML
  4. Элемент
  5. <input>
  6. <input type="radio">

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

<input type="radio">

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

Атрибутtype тега<input> со значениемradio обычно используется для создания группы радиокнопок (переключателей), описывающих набор взаимосвязанных параметров.

Одновременно пользователь может выбрать лишь одну радиокнопку из предложенных. Радиокнопки обычно отображаются как небольшие кружки, которые заполняются или подсвечиваются, когда выбраны.

Интерактивный пример

<fieldset>  <legend>Select a maintenance drone:</legend>  <div>    <input type="radio" name="drone" value="huey" checked />    <label for="huey">Huey</label>  </div>  <div>    <input type="radio" name="drone" value="dewey" />    <label for="dewey">Dewey</label>  </div>  <div>    <input type="radio" name="drone" value="louie" />    <label for="louie">Louie</label>  </div></fieldset>
p,label {  font:    1rem "Fira Sans",    sans-serif;}input {  margin: 0.4rem;}

Радиокнопки называются так потому, что выглядят и функционируют в схожей манере с кнопками старомодных радиоприёмников, подобных представленному ниже.

Shows what radio buttons looked like in the olden days.

Примечание:Чекбоксы похожи на радиокнопки, но с одним важным отличием: радиокнопки предназначены для выбора одного значения из предложенных, в то время как чекбоксы позволяют "включать" и "выключать" значения. Если существует несколько элементов управления, то с помощью радиокнопок пользователь сможет выбрать лишь один из них, а чекбоксы позволят выбрать несколько значений одновременно.

ValueСтрока DOM отображающая значение радиокнопки
Событияchange иinput
Универсальные атрибутыchecked
Атрибуты IDLchecked иvalue
Методыselect()

Атрибут value

Атрибутvalue - этострока DOM, содержащая значение радиокнопки. Это значение никогда не показывается пользователю его веб-браузером. Атрибут value используется для того, чтобы точно определить какая из радиокнопок была выбрана пользователем.

Создание группы радиокнопок

Группа радиокнопок определяется путём присвоения каждой радиокнопке в данной группе одного и того же значения атрибута (name). Выбор любой радиокнопки в этой группе автоматически отменяет выбор другой радиокнопки в той же группе.

Вы можете создать любое количество групп радиокнопок, если каждой из этих групп будет присвоено своё уникальное значение атрибутаname.

Например, если в вашей форме необходимо запросить предпочитаемый способ контакта с пользователем, то вы можете создать три радиокнопки сname="contact" , но с разнымиvalue ="email",value ="phone" иvalue ="mail" соответственно. Пользователь не видит атрибутыname иvalue (если только вы не добавляете код для их отображения).

HTML будет выглядеть следующим образом:

html
<form>  <p>Please select your preferred contact method:</p>  <div>    <input type="radio" name="contact" value="email" />    <label for="contactChoice1">Email</label>    <input type="radio" name="contact" value="phone" />    <label for="contactChoice2">Phone</label>    <input type="radio" name="contact" value="mail" />    <label for="contactChoice3">Mail</label>  </div>  <div>    <button type="submit">Submit</button>  </div></form>

Здесь вы видите три радиокнопки, каждая из которых имеет атрибутname со значением"contact" и уникальный атрибутvalue, который однозначно идентифицирует эту радиокнопку в данной группе. Каждой радиокнопке присвоен уникальныйid, связанный с тегом<label> через атрибутfor для установления связи между конкретной меткой и конкретной радиокнопкой.

Вы можете опробовать этот код здесь:

Представление данных группы радиокнопок

Когда представленная выше форма отправляется на сервер с информацией о выбранной радиокнопке, то её данные включают запись в виде"contact=name". Например, если пользователь кликает на радиокнопку "Phone", а затем отправляет форму на сервер, данные формы будут включать в себя строку"contact=phone".

Если вы пренебрежёте атрибутомvalue в вашем HTML, то отправленные данные просто присвоят данной группе значение"on". То есть, если пользователь кликнет на радиокнопку "Phone" и отправит форму, итоговые данные отобразятся как"contact=on" и будут абсолютно бесполезны. Поэтому никогда не забывайте указывать атрибутvalue!

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

Поскольку отправлять пустую форму в большинстве случаев не имеет никакого смысла, то разумно оставлять одну радиокнопку активированной по умолчанию с помощью атрибута"checked". Смотрите здесьSelecting a radio button by default.

Давайте добавим немного кода в наш пример для того, чтобы изучить данные, полученные из этой формы. HTML изменяется путём добавления блока<pre> для вывода данных формы.

html
<form>  <p>Please select your preferred contact method:</p>  <div>    <input type="radio" name="contact" value="email" />    <label for="contactChoice1">Email</label>    <input type="radio" name="contact" value="phone" />    <label for="contactChoice2">Phone</label>    <input type="radio" name="contact" value="mail" />    <label for="contactChoice3">Mail</label>  </div>  <div>    <button type="submit">Submit</button>  </div></form><pre></pre>

Затем добавим немногоJavaScript. Установим обработчик событияsubmit, которая будет отправляться при клике пользователя на кнопку "Отправить":

js
var form = document.querySelector("form");var log = document.querySelector("#log");form.addEventListener(  "submit",  function (event) {    var data = new FormData(form);    var output = "";    for (const entry of data) {      output = entry[0] + "=" + entry[1] + "\r";    }    log.innerText = output;    event.preventDefault();  },  false,);

Опробуйте этот пример и убедитесь, что для группы радиокнопок"contact" будет только один результат.

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

Мы уже осветили основные моменты работы с радиокнопками выше. Давайте рассмотрим другие распространённые функции и методы, связанные с использованием радиокнопок, о которых вам нужно знать.

Выбор радиокнопки по умолчанию

Чтобы установить радиокнопку как выбранную по умолчанию, вам необходимо подключить атрибутchecked, как показано ниже в немного изменённой версии предыдущего примера.

html
<form>  <p>Please select your preferred contact method:</p>  <div>    <input      type="radio"           name="contact"      value="email"      checked />    <label for="contactChoice1">Email</label>    <input type="radio" name="contact" value="phone" />    <label for="contactChoice2">Phone</label>    <input type="radio" name="contact" value="mail" />    <label for="contactChoice3">Mail</label>  </div>  <div>    <button type="submit">Submit</button>  </div></form>

В данном случае первая радиокнопка будет выбрана по умолчанию.

Примечание:Если вы устанавливаете атрибутchecked более чем на одну кнопку, то стоит иметь в виду, что каждый последующий атрибутchecked отменяет предыдущий, то есть как отмеченная будет выбрана последняя радиокнопка с атрибутомchecked. Это происходит потому, что в каждой группе радиокнопок одновременно может быть выбрана только одна кнопка, и браузер автоматически отменяет другие выбранные до этого радиокнопки.

Providing a bigger hit area for your radio buttons

В примерах, представленных выше, вы могли заметить, что можно выбрать радиокнопку, кликнув как на соединённый с ней элемент<label>, так и на саму кнопку. Это действительно полезная функция HTML-форм, которая облегчает пользователям выбор нужной опции, особенно на устройствах с небольшим экраном, таких как смартфоны. Помимо специальных возможностей, это другая веская причина для правильного использования элементов<label> в ваших формах.

Валидация формы

Радиокнопки не участвуют в проверке ограничений, так как у них нет реальных значений для ограничения.

Установка стилей радиокнопок

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

HTML будет выглядеть следующим образом:

html
<form>  <fieldset>    <legend>Please select your preferred contact method:</legend>    <div>      <input        type="radio"               name="contact"        value="email"        checked />      <label for="contactChoice1">Email</label>      <input type="radio" name="contact" value="phone" />      <label for="contactChoice2">Phone</label>      <input type="radio" name="contact" value="mail" />      <label for="contactChoice3">Mail</label>    </div>    <div>      <button type="submit">Submit</button>    </div>  </fieldset></form>

Здесь не так много нового, кроме дополнения в виде элементов<fieldset> и<legend>, которые позволяют сгруппировать элементы форм между собой функционально и семантически.

CSS будет выглядеть так:

css
html {  font-family: sans-serif;}div:first-of-type {  display: flex;  align-items: flex-start;  margin-bottom: 5px;}label {  margin-right: 15px;  line-height: 32px;}input {  -webkit-appearance: none;  -moz-appearance: none;  appearance: none;  border-radius: 50%;  width: 16px;  height: 16px;  border: 2px solid #999;  transition: 0.2s all linear;  outline: none;  margin-right: 5px;  position: relative;  top: 4px;}input:checked {  border: 6px solid black;}button,legend {  color: white;  background-color: black;  padding: 5px 10px;  border-radius: 0;  border: 0;  font-size: 14px;}button:hover,button:focus {  color: #999;}button:active {  background-color: white;  color: black;  outline: 1px solid black;}

Самым примечательным здесь является использование свойстваappearance с использованием префиксов некоторых браузеров. По умолчанию радиокнопки (и чекбоксы) уже имеют собственные стили в каждой операционной системе. Придав свойствуappearance значениеnone, вы можете отменить все "родные" настройки стилей операционной системы и создать свои собственные. Здесь мы использовали свойстваborder иborder-radius, а также свойствоtransition для создания хорошо анимированного выбора радиокнопок. Заметьте также, что псевдокласс:checked используется для указания стилей внешнего вида кнопок при их выборе.

Стоит иметь в виду, что свойствоappearance неплохо работает для создания простых стилей, но имеет тенденцию вести себя несколько непоследовательно в некоторых браузерах и полностью не работает в Internet Explorer. Тщательно проверяйте как работает ваш сайт в каждом браузере!

Обратите внимание, что при клике на радиокнопку, на предыдущей выбранной кнопке появляется мягкий эффект угасания. Кроме того, стиль и окраска легенды и кнопки "Submit" имеет сильный контраст с остальным текстом. Возможно, это не совсем тот эффект, который вы хотели бы видеть в своём реальном веб-приложении, но этот пример хорошо отображает возможности CSS.

Спецификации

Specification
HTML
# radio-button-state-(type=radio)

Совместимость с браузерами

Смотрите также

  • <input> and theHTMLInputElement interface that implements it.
  • RadioNodeList: the interface that describes a list of radio buttons

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp