Решение Кайла отлично сработало для меня, поэтому я провел свое исследование, чтобы избежать каких-либо Js и CSS, но просто придерживаясь HTML. Добавление значения selected
к элементу, который мы хотим отобразить в качестве заголовка, заставляет его показываться в первую очередь как заполнитель. Что-то вроде:
<option selected disabled>Choose here</option>
Полная разметка должна быть такой:
<select>
<option selected disabled>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Вы можете взглянуть на эту скрипку , и вот результат:
Если вы не хотите, чтобы тип текста-заполнителя отображался в списке параметров после того, как пользователь щелкает поле выбора, просто добавьте hidden
атрибут следующим образом:
<select>
<option selected disabled hidden>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Проверьте скрипку здесь и снимок экрана ниже.
hidden
display: none
hidden
наoption
вselect
не работает в Safari, на любой прошивке или Mac. Таким образом, этот ответ предлагает только частичную поддержку браузера.Вот решение:
источник
selected="true"
это неверно. Вместо этого используйтеselected="selected"
в (X) HTML или простоselected
в HTML. Похоже, вы перепуталиselected
атрибут соselected
свойством, которое изменяется следующим образом:myOption.selected = true;
илиmyOption.selected = false;
hidden
(который «обычно реализуется в CSS» , используя вdisplay: none
любом случае), используяdisplay: none
на условияхoption
не работает в Safari; опция все еще появляется.Правильный и семантический способ - использовать параметр метки-заполнителя :
option
элемент как первый дочерний элементselect
value
= ""
option
option
required
атрибут вselect
Это заставит пользователя выбрать другой вариант для того , чтобы иметь возможность представить форму, и браузеры должны оказывать
option
по желанию:Однако большинство браузеров будут отображать его как обычно
option
. Поэтому нам придется исправить это вручную, добавив следующее вoption
:selected
Атрибут, чтобы сделать его выбран по умолчаниюdisabled
Атрибут, чтобы сделать его не выбираемый пользователемdisplay: none
, чтобы скрыть его из списка значенийисточник
hidden
атрибут в тег опции заполнителя вместо того,display: none
как кажется, что большинство мобильных браузеров игнорируютdisplay: none
атрибут CSS, и, на мой взгляд, он даже более семантически правильный.hidden
это обычно реализуется какdisplay: none
под капотом (и в спецификации явно предлагается это как «типичная» реализация). Таким образом, я был бы удивлен, если бы какие-нибудь браузеры - мобильные или другие -hidden
работали, ноdisplay: none
не работали . Вы можете привести какой-нибудь пример?Поскольку вы не можете использовать назначенные заполнители для
select
тегов, я не верю, что есть какой-либо способ сделать именно то, что вы просите, с чистым HTML / CSS. Однако вы можете сделать что-то вроде этого:«Выбрать язык» будет отображаться в раскрывающемся списке, но после выбора другого варианта будет невозможно повторно выбрать его.
Надеюсь, это поможет.
источник
Попробуй это:
В CSS:
источник
У меня есть решение с диапазоном, отображаемым над выбором, пока выбор не будет сделан. Диапазон отображает сообщение по умолчанию, поэтому его нет в списке предложений:
HTML:
CSS:
Javascript (с JQuery):
Я сделал jsfiddle для демонстрации . Протестировано с Firefox и IE8.
источник
span
использовать там,legend
и это было бы идеально, илиlabel
pointer-events: none
в вашем диапазоне клики проходили для выбора.вы, конечно, можете переместить css в файл css, если хотите, и поместить сценарий, чтобы поймать
esc
кнопку, чтобы снова выбрать отключенное. В отличие от других подобных ответов, которые я поставилvalue=""
, это так, если вы отправите значение (я) своего списка выбора с формой, оно не будет содержать «выбрал что-то». В asp.net mvc 5 отправляется как json, скомпилированный с помощью,var obj = { prop:$('#ddl').val(),...};
иJSON.stringify(obj);
значение prop будет нулевым.источник
Op1:
Op2:
источник