— HTML | MDN
HTML тэг <select>
представляет собой элемент управления который содержит меню опций:
Элемент включает глобальные атрибуты.
autofocus
HTML5- Этот атрибут указывает что при загрузке страницы данный элемент формы должен иметь фокус ввода, пока пользователь не переопределит это, к примеру печатая в разных элементах управления. Только один элемент формы может иметь атрибут
autofocus
, элемент является логическим (булевым). disabled
- Этот логический атрибут указывает что пользователь не может взаимодействовать с элементом управления. Если атрибут не указан, элемент управления наследует настройки от содержащего его элемента, к примеру
fieldset
; если у родительского элемента не указан атрибутdisabled
, то элемент управления доступен для взаимодействия. form
HTML5- Этот атрибут указывает к какой конкретно форме относится элемент <select> .
Если атрибут указан, его значением должно быть ID формы в том же документе. Это позволяет размещать элементы <select> где угодно в документе, а не только как потомки форм.
multiple
- Этот логический атрибут указывает что возможен выбор нескольких опций в списке. Если данный атрибут не указан, то только одна опция может быть выбрана.
name
- Этот атрибут используется для указания имени элемента управления.
required
HTML5- Этот логический атрибут указывает что обязательно должна быть выбрана опция и которая содержит не пустую строку.
size
- Если элемент управления представлен как прокручиваемый список, этот атрибут указывает количество строк в списке, которые должны быть видны за раз. Браузеру не требуется представлять <select> в виде прокручиваемого списка. Значение по умолчанию 0.
Примечания Firefox: Согласно спецификации HTML5, значение размера по умолчанию должно быть 1; однако на практике, оказывается что это портит некоторые веб сайты, и ни один браузер не придерживается этого на данный момент, поэтому Mozilla предпочла также указать 0 пока что в Firefox.
<select name="select">
<option value="value1">Значение 1</option>
<option value="value2" selected>Значение 2</option>
<option value="value3">Значение 3</option>
</select>
Результат
Примечания
BCD tables only load in the browser
- Другие элементы форм:
<form>
,<legend>
,<label>
,<button>
,<option>
,<datalist>
,<optgroup>
<fieldset>
, <textarea> (en-US), <keygen> (en-US),<input>
,<output>
,<progress>
and<meter>
. - События запускаемые
<select>
: change.
Атрибут value | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS |
4.![]() | 1.0+ | 4.0+ | 1.0+ | 1.0+ | 1.0+ | 1.0+ |
Спецификация
HTML: | 3.2 | 4.01 | 5.0 | XHTML: | 1.0 | 1.1 |
Описание
Определяет значение пункта списка, которое будет отправлено на сервер. На сервер отправляется пара «имя=значение», где имя задается атрибутом name тега <select>, а значение — атрибутом value выделенных пунктов списка. Значение может как совпадать с текстом пункта, так быть и самостоятельным. Также атрибут value применяется для получения значений данных через скрипты.
Синтаксис
<option value="значение">...</option>
Значения
Любая текстовая строка заключенная в двойные или одинарные кавычки.
Значение по умолчанию
Пример
HTML5IECrOpSaFx
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Тег OPTION, атрибут value</title> <script> function dataSelect(f) { n = f.
hero.selectedIndex if(n) alert("Выбран герой: " + f.hero.options[n].value) } </script> </head> <body> <form action="option1.php"> <p><select name="hero"> <option>Выберите героя</option> <option value="Чебурашка">Чебурашка</option> <option value="Крокодил Гена">Крокодил Гена</option> <option value="Шапокляк">Шапокляк</option> <option value="Крыса Лариса">Крыса Лариса</option> </select> <input type="button" value="OK"></p> </form> </body> </html>
Не выкладывайте свой код напрямую в комментариях, он отображается некорректно. Воспользуйтесь сервисом cssdeck.com или jsfiddle.net, сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.
Атрибут value тега | HTML справочник
HTML тег <option>Значение и применение
Атрибут value (HTML тега <option>) указывает значение, которое будет отправлено на сервер при отправке формы.
Если значение атрибута не указано, то в качестве значения будет выступать содержимое элемента <option>.
Поддержка браузерами
Синтаксис:
<option value>
Отличия HTML 4.01 от HTML 5
Нет.Пример использования
<!DOCTYPE html> <html> <head> <title>Пример использования атрибута value HTML тега <option></title> </head> <body> <form action = "#"> <!--Адрес передачи данных при отправке формы (относительный, либо абсолютный URL)--> <select> <option value = "A">Option A</option> <option value = "B">Option B</option> <option value = "C">Option C</option> </select> <input type = "submit" value = "отправить"> </form> </body> </html>
В браузере это выглядит следующим образом:
Пример использования атрибута value HTML тега <option> (значение, которое будет отправлено на сервер, когда форма отправляется).
Давайте рассмотрим пример в котором используются раскрывающийся список (<select>) и список предопределенных вариантов для ввода (<datalist>).
Элементом списков выступает тег <option>. Если в списках используется атрибут label, то текст надписи, которая указывает значение параметра берется из него. Если значение атрибута label не указано, то этим значением выступает содержимое элемента <option>, при этом необходимо использовать закрывающий элемент </option>.
Обращаю Ваше внимание, что если в списке предопределённых вариантов (<datalist>) используется атрибут value, то поиск осуществляется по нему, если атрибут отсутствует, то по содержимому элемента, при этом необходимо использовать закрывающий элемент </option>.
<!DOCTYPE html> <html> <head> <title>Пример использования атрибута label HTML тега <option></title> </head> <body> <form action = "#"> <!--Адрес передачи данных при отправке формы (относительный, либо абсолютный URL)--> <fieldset> <!--Группируем элементы формы--> <legend>Составление маршрута</legend> <!--Заголовок для элемента <fieldset> --> Город отправления: <select> <!--Раскрывающийся список--> <option label = "Владивосток"> <option label = "Анапа"> <option label = "Москва"> <option label = "Смоленск"> <option label = "Якутск"> </select> <p>Аэропорт назначения: <input type = "text" list = "airports"> </p> <datalist id = "airports"> <!--Список предопределенных вариантов для ввода--> <option value = "VVO" label = "Владивосток"> <option value = "MEM" label = "Анапа"> <option value = "VKO" label = "Москва Внуково"> <option value = "LNX" label = "Смоленск"> <option value = "YKS" label = "Якутск"> </datalist> <input type = "submit" value = "подтвердить"> </fieldset> </form> </body> </html>
В браузере это выглядит следующим образом:
Пример использования атрибута label HTML тега <option> (текст надписи, которая указывает значение параметра).
Формы – React
<form>
<label>
Имя:
<input type="text" name="name" />
</label>
<input type="submit" value="Отправить" />
</form>
По умолчанию браузер переходит на другую страницу при отправке HTML-форм, в том числе и этой. Если вас это устраивает, то не надо ничего менять, в React формы работают как обычно. Однако, чаще всего форму удобнее обрабатывать с помощью JavaScript-функции, у которой есть доступ к введённым данным. Стандартный способ реализации такого поведения называется «управляемые компоненты».
Управляемые компоненты
В HTML элементы формы, такие как <input>
, <textarea>
и <select>
, обычно сами управляют своим состоянием и обновляют его когда пользователь вводит данные. В React мутабельное состояние обычно содержится в свойстве компонентов
state
и обновляется только через вызов setState()
Мы можем скомбинировать оба подхода и сделать состояние React-компонента «единственным источником правды». Тогда React-компонент будет рендерить форму и контролировать её поведение в ответ на пользовательский ввод. Значение элемента формы input в этом случае будет контролировать React, а сам элемент будет называться «управляемый компонент».
Допустим, мы хотим, чтобы предыдущий пример выводил на экран имя, когда мы отправляем форму. Тогда можно написать форму в виде управляемого компонента:
class NameForm extends React.Component {
constructor(props) {
super(props);
this.state = {value: ''};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) { this.setState({value: event.target.value}); }
handleSubmit(event) {
alert('Отправленное имя: ' + this.
state.value);
event.preventDefault();
}
render() {
return (
<form onSubmit={this.handleSubmit}> <label>
Имя:
<input type="text" value={this.state.value} onChange={this.handleChange} /> </label>
<input type="submit" value="Отправить" />
</form>
);
}
}
Посмотреть на CodePen
Мы установили атрибут value
для поля ввода, и теперь в нём всегда будет отображаться значение this.state.value
. Состояние React-компонента стало «источником истины». А так как каждое нажатие клавиши вызывает handleChange
, который обновляет состояние React-компонента, значение в поле будет обновляться по мере того, как пользователь печатает.
В управляемом компоненте значение поля ввода всегда определяется состоянием React. Хотя это означает, что вы должны написать немного больше кода, теперь вы сможете передать значение и другим UI-элементам или сбросить его с других обработчиков событий.
Тег textarea
HTML-элемент <textarea>
в качестве текста отображает дочерний элемент:
<textarea>
Привет! Тут просто немного текста внутри тега textarea
</textarea>
В React <textarea>
использует атрибут value
. Таким образом, форму с <textarea>
можно написать почти тем же способом, что и форму с однострочным <input>
:
class EssayForm extends React.Component {
constructor(props) {
super(props);
this.state = { value: 'Будьте любезны, напишите сочинение о вашем любимом DOM-элементе.' };
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) { this.setState({value: event.target.value}); }
handleSubmit(event) {
alert('Сочинение отправлено: ' + this.state.value);
event.preventDefault();
}
render() {
return (
<form onSubmit={this.
handleSubmit}>
<label>
Сочинение:
<textarea value={this.state.value} onChange={this.handleChange} /> </label>
<input type="submit" value="Отправить" />
</form>
);
}
}
Обратите внимание, что мы инициализировали this.state.value
в конструкторе, так что в текстовой области изначально есть текст.
Тег select
В HTML <select>
создаёт выпадающий список. HTML-код в этом примере создаёт выпадающий список вкусов:
<select>
<option value="grapefruit">Грейпфрут</option>
<option value="lime">Лайм</option>
<option selected value="coconut">Кокос</option>
<option value="mango">Манго</option>
</select>
Пункт списка «Кокос» выбран по умолчанию из-за установленного атрибута selected
. React вместо этого атрибута использует value
в корневом теге select
. В управляемом компоненте так удобнее, потому что обновлять значение нужно только в одном месте (
state
). Пример:
class FlavorForm extends React.Component {
constructor(props) {
super(props);
this.state = {value: 'coconut'};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) { this.setState({value: event.target.value}); }
handleSubmit(event) {
alert('Ваш любимый вкус: ' + this.state.value);
event.preventDefault();
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<label>
Выберите ваш любимый вкус:
<select value={this.state.value} onChange={this.handleChange}> <option value="grapefruit">Грейпфрут</option>
<option value="lime">Лайм</option>
<option value="coconut">Кокос</option>
<option value="mango">Манго</option>
</select>
</label>
<input type="submit" value="Отправить" />
</form>
);
}
}
Посмотреть на CodePen
Подводя итог, <input type="text">
, <textarea>
, и <select>
работают очень похоже. Все они принимают атрибут
value
, который можно использовать, чтобы реализовать управляемый компонент.
Примечание
В атрибут
value
можно передать массив, что позволит выбрать несколько опций в тегеselect
:<select multiple={true} value={['Б', 'В']}>
Загрузка файла
В HTML <input type="file">
позволяет пользователю выбрать один или несколько файлов для загрузки с устройства на сервер или управлять им через JavaScript с помощью File API.
Так как значение такого элемента доступно только для чтения, это неуправляемый React-компонент. Мы расскажем про этот и другие неуправляемые компоненты далее в документации.
Обработка нескольких элементов input
Если вам нужны несколько управляемых элементов input
, вы можете назначить каждому из них атрибут name
, что позволит функции-обработчику решать, что делать, основываясь на значении event.
. target.name
Пример:
class Reservation extends React.Component {
constructor(props) {
super(props);
this.state = {
isGoing: true,
numberOfGuests: 2
};
this.handleInputChange = this.handleInputChange.bind(this);
}
handleInputChange(event) {
const target = event.target;
const value = target.type === 'checkbox' ? target.checked : target.value;
const name = target.name;
this.setState({
[name]: value });
}
render() {
return (
<form>
<label>
Пойдут:
<input
name="isGoing" type="checkbox"
checked={this.state.isGoing}
onChange={this.handleInputChange} />
</label>
<br />
<label>
Количество гостей:
<input
name="numberOfGuests" type="number"
value={this.state.numberOfGuests}
onChange={this.handleInputChange} />
</label>
</form>
);
}
}
Посмотреть на CodePen
Обратите внимание, что мы используем вычисляемые имена свойств, чтобы обновить значение в state
через ключ, который соответствует атрибуту name элемента input:
this.
setState({
[name]: value});
Идентичный ES5-код:
var partialState = {};
partialState[name] = value;this.setState(partialState);
Кроме того, setState()
автоматически производит слияние части состояния с текущим состоянием, то есть нам нужно передать в него только ту часть state
, которую хотим изменить.
Значение null управляемого компонента
Если установить управляемому компоненту проп value
, то пользователь не сможет изменить его значение без вашего желания. Если вы установили value
, а поле ввода по-прежнему можно редактировать, то, возможно, вы случайно задали value
, равный undefined
или null
.
Код ниже это демонстрирует. (Изначально заблокированный input
становится редактируемым после небольшой задержки.)
ReactDOM.render(<input value="Привет" />, mountNode);
setTimeout(function() {
ReactDOM.
render(<input value={null} />, mountNode);
}, 1000);
Альтернативы управляемым компонентам
Использование управляемых компонентов иногда может быть утомительным. Приходится писать обработчик события для каждого варианта изменения ваших данных и проводить всё состояние формы через компонент React. Это может особенно раздражать, если вы переносите существующую кодовую базу в React, или когда работаете над интеграцией React-приложения с другой библиотекой. В такой ситуации могут пригодиться неуправляемые компоненты — альтернативная техника реализации ввода данных в форму.
Полноценные решения
Если вы ищете полноценное решение, которое может валидировать ввод, запомнить посещённые поля формы и обработать её отправку, присмотритесь к Formik. Эта библиотека построена на принципах управляемых компонентов и управления состоянием, так что не пренебрегайте их изучением.
HTML и CSS с примерами кода
Тег <option>
(от англ. option — пункт, параметр, опция) определяет отдельные пункты списка, создаваемого с помощью контейнера
<select>
.
Ширина списка определяется самым широким текстом, указанным в <option>
, а также может изменяться с помощью стилей. Если планируется отправлять данные списка на сервер, то требуется поместить элемент <select>
внутрь формы. Это также необходимо, когда к данным списка идёт обращение через скрипты.
Синтаксис
<select>
<option>Пункт 1</option>
<option>Пункт 2</option>
</select>
Закрывающий тег не обязателен.
Атрибуты
disabled
- Заблокировать для доступа элемент списка.
label
- Указание метки пункта списка.
selected
- Заранее устанавливает определённый пункт списка выделенным.
value
- Значение пункта списка, которое будет отправлено на сервер или прочитано с помощью скриптов.
Также для этого элемента доступны универсальные атрибуты.
disabled
Блокирует элемент списка для его выбора.
Синтаксис
<option disabled>...</option>
Значения
Нет.
Значение по умолчанию
По умолчанию этот атрибут выключен.
label
Атрибут предназначен для указания метки пункта списка, сокращённой по сравнению с текстом внутри <option>
. Если атрибут label
присутствует, то текст внутри <option>
игнорируется и в списке выводится значение label
.
Синтаксис
<option label="<текст>">...</option>
Значения
Любая текстовая строка.
Значение по умолчанию
Нет.
selected
Делает текущий пункт списка выделенным. Если к элементу <select>
добавлен атрибут multiple
, то можно выделять более одного пункта списка.
Синтаксис
<option selected>...</option>
Значения
Нет.
Значение по умолчанию
По умолчанию этот атрибут выключен.
value
Определяет значение пункта списка, которое будет отправлено на сервер. На сервер отправляется пара «имя=значение
», где имя задаётся атрибутом name элемента <select>
, а значение — атрибутом value
выделенных пунктов списка. Значение может как совпадать с текстом пункта, так быть и самостоятельным. Также атрибут value
применяется для получения значений данных через скрипты.
Синтаксис
<option value="<текст>">...</option>
Значения
Любая текстовая строка.
Значение по умолчанию
Нет.
Спецификации
Описание и примеры
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>OPTION</title>
</head>
<body>
<form action="option2.
php">
<p>
<select size="3" name="hero">
<option disabled>Выберите рыцаря</option>
<option value="t1" selected>Гавейн</option>
<option value="t2">Ланселот</option>
<option value="t3">Галахэд</option>
<option value="t4">Персиваль</option>
</select>
</p>
<p><input type="submit" value="Отправить" /></p>
</form>
</body>
</html>
Ссылки
HTML тег
HTML тег <select> используется для определения выпадающего списка, который появляется при нажатии мышью на элемент формы и позволяет пользователю выбрать один из вариантов.
Для определения доступных вариантов выбора используется тег <option>, вложенный в тег <select>.
По умолчанию первый пункт в списке отображается как выбранный. Для изменения предопределенного варианта используется атрибут selected.
Для объединения нескольких вариантов в одну группу используется тег <optgroup>. Содержимое тега <optgroup> выглядит как заголовок жирного начертания.
Внешний вид списка зависит от использования атрибута size, который устанавливает высоту списка. Ширина списка зависит от длины текста в теге <option>. Ширину можно также задать с помощью CSS стилей.
Если необходимо отправлять данные на сервер, либо обращаться к списку через скрипты, то тег необходимо поместить внутрь формы (тег <form>).Синтаксис¶
Содержимое элемента заключается между открывающим (<select>) и закрывающим (</select>) тегами. Закрывающий тег обязателен
Пример¶
<!DOCTYPE html>
<html>
<head>
<title>Заголовок окна веб-страницы</title>
</head>
<body>
<form action="action_form.php" target="_top">
<select>
<option value="books">Книги</option>
<option value="html">HTML</option>
<option value="css">CSS</option>
<option value="php">PHP</option>
<option value="js">JavaScript</option>
</select>
</form>
</body>
</html>
Попробуйте сами!Результат¶
КнигиHTMLCSSPHPJavaScriptПример¶
<!DOCTYPE html>
<html>
<head>
<title>Заголовок окна веб-страницы</title>
</head>
<body>
<select>
<optgroup label="Книги">
<option value="html">HTML</option>
<option value="css">CSS</option>
</optgroup>
<optgroup label="Сниппеты">
<option value="git">Git</option>
<option value="java">Java</option>
</optgroup>
</select>
</body>
</html>
Попробуйте сами! В этом примере мы использовали тег <optgroup> для сбора опций в группе.
Результат¶
Пример¶
<!DOCTYPE html>
<html>
<head>
<title>Заголовок окна веб-страницы</title>
</head>
<body>
<p>Аэропорт вылета:</p>
<form action="action_form.php" target="_top">
<input type = "text" list = "airports" name="airports">
<datalist id = "airports">
<option value = "Санкт-Петербург">
<option value = "Краснодар">
<option value = "Москва">
<option value = "Новосибирск">
</datalist>
<input type = "submit" value = "подтвердить">
</form>
</body>
</html>
Попробуйте сами!Результат¶
В этом примере мы использовали тег <form>, так как нам необходимо отправить данные на сервер.
Атрибуты ¶
Тег <select> поддерживает также глобальные атрибуты и атрибуты событий.
Как добавить стиль к тегу <select> ?
Распространенные свойства для изменения визуальной насыщенности/выделения/размера текста внутри тега <select>:
Цвет текста внутри тега <select>:
Стили форматирования текста для тега <select>:
Другие свойства для тега <select>:
Тег select
Пример
Создайте раскрывающийся список с четырьмя параметрами:
<select>
<option value=»volvo»>Volvo</option>
<option value=»saab»>Saab</option>
<option value=»mercedes»>Mercedes</option>
<option value=»audi»>Audi</option>
</select>
Определение и использование
Элемент <select> используется для создания раскрывающегося списка.
Теги <option> внутри элемента <select> определяют доступные параметры в списке.
Поддержка браузера
Элемент | |||||
---|---|---|---|---|---|
<select> | Да | Да | Да | Да | Да |
Советы и примечания
Совет: Элемент <select> является элементом управления Form и может использоваться в форме для сбора пользовательских данных.
Различия между HTML 4,01 и HTML5
HTML5 добавил некоторые новые атрибуты.
Атрибуты
= Новый в HTML5.
Атрибут | Значение | Описание |
---|---|---|
autofocus | autofocus | Указывает, что раскрывающийся список должен автоматически получать фокус при загрузке страницы |
disabled | disabled | Указывает, что раскрывающийся список должен быть отключен |
form | form_id | Определяет одну или несколько форм, к которым принадлежит поле Select |
multiple | multiple | Указывает, что несколько параметров могут быть выбраны одновременно |
name | name | Определяет имя для раскрывающегося списка |
required | required | Указывает, что пользователь должен выбрать значение перед отправкой формы |
size | number | Определяет количество видимых параметров в раскрывающемся списке |
Глобальные атрибуты
Тег <select> также поддерживает Глобальные атрибуты в HTML.
Атрибуты события
Тег <select> также поддерживает Атрибуты событий в HTML.
Похожие страницы
HTML DOM Ссылки: Select Object
CSS учебник: Styling Forms
Параметры CSS по умолчанию
Нет.
HTML Выбрать тег | Синтаксис тега, примеры, атрибуты
HTML-тег .
По умолчанию выбран первый вариант из списка. Чтобы изменить предопределенный параметр, используется выбранный атрибут.
Тег
Внешний вид списка зависит от атрибута размера, который определяет высоту списка. Ширина списка зависит от длины текста внутри
Тег сложна, и ее сложно контролировать. Для получения полного контроля вам может понадобиться библиотека с улучшенными виджетами форм или выпадающее меню с несемантическими элементами.
Если вам нужно отправить данные на сервер или обратиться к списку со скриптами, тег состоит из пар. Контент записывается между открывающим () тегами.Пример HTML-тега
Попробуйте сами »Результат¶
BooksHTMLCSSPHPJavaScriptПример HTML-тега
В этом примере тег
Результат¶
HTMLCSSGitJava
Пример HTML-тега
Попробуйте сами »В этом примере используется тег