Я использую заполнители для ввода текста, который работает просто отлично. Но я бы хотел использовать местозаполнитель для моих селекторов. Конечно, я могу просто использовать этот код:
<select>
<option value="">Select your option</option>
<option value="hurr">Durr</option>
</select>
Но «Выберите свой вариант» черного цвета вместо светло-серого. Так что моё решение может быть на основе CSS. JQuery тоже хорошо.
Это только делает параметр серым в раскрывающемся списке (поэтому после нажатия стрелки):
option:first {
color: #999;
}
Вопрос заключается в следующем: как люди создают заполнители в селекторах? Но это уже ответили, ура.
И использование этого приводит к тому, что выбранное значение всегда будет серым (даже после выбора реальной опции):
select {
color: #999;
}
html
css
html-select
placeholder
Томас
источник
источник
Ответы:
Без CSS - нет ответа JavaScript / jQuery:
источник
<select> <option value="" disabled selected>Select your option</option> </select>
Я просто наткнулся на этот вопрос, и вот что работает в Firefox и Chrome (по крайней мере):
Параметр « Отключено» останавливает
<option>
выбор с помощью мыши и клавиатуры, тогда как простое использование'display:none'
позволяет пользователю по-прежнему выбирать с помощью стрелок на клавиатуре.'display:none'
Стиль просто делает поле списка вид «хороший».Примечание. Использование пустого
value
атрибута в опции «местозаполнитель» позволяет проверке (обязательный атрибут) обойти наличие «местозаполнителя», поэтому, если параметр не изменен, но является обязательным, браузер должен предложить пользователю выбрать параметр из списка.Обновление (июль 2015 г.):
Этот метод подтвержден работой в следующих браузерах:
Обновление (октябрь 2015 г.):
Я удалил
style="display: none"
в пользу атрибута HTML5,hidden
который имеет широкую поддержку.hidden
Элемент имеет сходные черты , какdisplay: none
в Safari, Internet Explorer (Project Spartan нуждается в проверке) , гдеoption
видна в выпадающем списке, но не по выбору.Обновление (январь 2016 г.):
Когда
select
элемент есть,required
он позволяет использовать:invalid
псевдокласс CSS, который позволяет стилизоватьselect
элемент, когда он находится в состоянии «заполнитель».:invalid
работает здесь из-за пустого значения в заполнителеoption
.Как только значение будет установлено,
:invalid
псевдокласс будет удален . При желании вы также можете использовать,:valid
если хотите.Большинство браузеров поддерживают этот псевдокласс. Internet Explorer 10 и более поздние версии. Это лучше всего работает с
select
элементами в индивидуальном стиле ; в некоторых случаях, т. е. (Mac в Chrome / Safari), вам нужно изменить внешний видselect
окна по умолчанию, чтобы отображались определенные стили, т. е.background-color
иcolor
. Вы можете найти несколько примеров и больше о совместимости на developer.mozilla.org .Родной элемент внешнего вида Mac в Chrome:
Использование измененного элемента границы Mac в Chrome:
источник
display:none
стиль.:invalid
пути, прежде чем я сделал.color
параметров в поддерживаемых браузерах, как в этой скрипке . Это помогло бы подтвердить, что инвалидoption
является заполнителем. (Правка: я вижу, что Мэтт уже рассказал об этом в своем ответе)Для обязательного поля в современных браузерах есть решение на основе чистого CSS:
источник
required
работать, поэтому бесполезно, если вы хотите, чтобы поле было необязательным.:required
селектор не поддерживается в IE8 и ниже.:invalid
Селектор не поддерживается в IE9 и ниже. quirksmode.org/css/selectorsrequired
условие, которое заставляет браузер применять:invalid
псевдокласс при выборе заполнителя.[value=""]
не будет работать как замена, потому что то, что обновляется при взаимодействии с пользователем, является свойством value, но этот синтаксис CSS ссылается на (несуществующий) атрибут .Что-то вроде этого:
HTML:
CSS:
JavaScript:
Рабочий пример: http://jsfiddle.net/Zmf6t/
источник
Я только что добавил скрытый атрибут,
option
как показано ниже. Это работает нормально для меня.источник
Приведенное ниже решение также работает в Firefox без JavaScript:
источник
У меня была та же проблема, и во время поиска я наткнулся на этот вопрос, и после того, как я нашел для меня хорошее решение, я хотел бы поделиться им с вами, ребята, на случай, если кто-нибудь из них сможет извлечь из этого пользу.
Вот:
HTML:
CSS:
JavaScript:
После того, как клиент сделает первый выбор, серый цвет больше не нужен, поэтому код JavaScript удаляет класс
place_holder
.Благодаря @ user1096901, в качестве обходного пути для браузера Internet Explorer, вы можете
place_holder
снова добавить класс в случае, если снова будет выбран первый вариант :)источник
Нет необходимости в JavaScript или CSS, только три атрибута:
Это не показывает вариант вообще; он просто устанавливает значение параметра по умолчанию.
Однако, если вам просто не нравится заполнитель того же цвета, что и остальные , вы можете исправить это встроенным образом так:
Очевидно, что вы можете разделить функции и, по крайней мере, CSS выбора в отдельные файлы.
Примечание: функция onload исправляет ошибку обновления.
источник
Пользователь не должен видеть заполнитель в опциях выбора. Я предлагаю использовать
hidden
атрибут для параметра заполнителя, и вам не нуженselected
атрибут для этого параметра. Вы можете просто поставить его как первый.источник
select:invalid
также действует.required
Здесь я изменил ответ Дэвида (принятый ответ). На его ответ он поставил отключенный и выбранный атрибут на
option
тег, но когда мы также добавим скрытый тег, он будет выглядеть намного лучше.Добавление дополнительного скрытого атрибута в
option
тег не позволит повторно выбрать опцию «Выберите вашу опцию» после выбора опции «Дурр».источник
Вот мой:
источник
<option value="" selected disabled>Please select</option>
в качестве первого варианта.Я вижу признаки правильных ответов, но, чтобы свести все воедино, это было бы моим решением:
источник
Durr
в сером цвете после его выбора. Это заставляет закрытое поле выбора всегда быть серым.Если вы используете Angular, сделайте так:
источник
hidden
атрибут, чтобы этот параметр не отображался при открытииselect
. Но спасибо за этот ответ, у меня это сработало.Это
HTML + CSS
решение сработало для меня:Удачи...
источник
Еще одна возможность в JavaScript:
JSFiddle
источник
Я люблю принятое решение , и оно прекрасно работает без JavaScript.
Я просто хочу добавить, как я принял этот ответ для компонента React с контролируемым выбором , потому что мне потребовалось несколько попыток, чтобы понять это. Было бы очень просто включить
react-select
и покончить с этим, но если вам не нужны удивительные функциональные возможности, которые предоставляет этот репозиторий, чего я не делаю для рассматриваемого проекта, нет необходимости добавлять больше килобайт в мой комплект. Обратите внимание,react-select
обрабатывает заполнители в выбираешь через сложную систему различныхinputs
иhtml
элементы.В React для контролируемого компонента вы не можете добавить
selected
атрибут к своим параметрам. React обрабатывает состояние выбора черезvalue
атрибут самогоselect
себя вместе с обработчиком изменений, где значение должно соответствовать одному из атрибутов значения в самих параметрах.Такие как, например
Так как это было бы неправильно и фактически выдало бы ошибку, чтобы добавить
selected
атрибут к одному из параметров, что тогда?Ответ прост, если вы думаете об этом. Поскольку мы хотим, чтобы наша первая
option
былаselected
такой же, какdisabled
иhidden
, нам нужно сделать три вещи:hidden
anddisabled
к первому определенномуoption
.option
чтобы быть пустой строкой.select
также как пустую строку.Теперь вы можете стилизовать выборку, как указано выше (или через,
className
если хотите).источник
[type="text"]
Заполнитель стиля ввода для выбранных элементовСледующее решение имитирует заполнитель применительно к
input[type="text"]
элементу:источник
Я хотел, чтобы SELECT был серым до тех пор, пока не будет выбран так для этого фрагмента HTML:
Я добавил эти определения CSS:
Он работает как положено в Chrome / Safari и, возможно, также в других браузерах, но я не проверял.
источник
Вот CSS- решение, которое прекрасно работает. Содержимое добавляется (и абсолютно позиционируется относительно контейнера) после содержащего элемента ( через: после псевдокласса ).
Он получает свой текст из атрибута placeholder, который я определил, где я использовал директиву ( attr (placeholder) ). Другим ключевым фактором являются события-указатели: нет - это позволяет кликам на тексте-заполнителе проходить до выбора. В противном случае он не выпадет, если пользователь щелкнет текст.
Я сам добавляю класс .empty в свою директиву select, но обычно я нахожу, что angular добавляет / удаляет .ng-empty для меня (я предполагаю, что это потому, что я внедряю версию 1.2 Angular в мой пример кода).
(Пример также демонстрирует, как обернуть HTML-элементы в AngularJS для создания ваших собственных входных данных)
источник
Я не мог заставить что-либо из этого работать в настоящее время, потому что для меня это (1) не требуется и (2) нужна опция, чтобы вернуться к выбору по умолчанию. Так что вот вариант с жесткими руками, если вы используете jQuery:
источник
Я не доволен решениями только для HTML / CSS, поэтому я решил создать кастом
select
с использованием JavaScript.Это то, что я написал за последние 30 минут, поэтому оно может быть улучшено.
Все, что вам нужно сделать, это создать простой список с несколькими атрибутами данных. Код автоматически превращает список в выпадающий список. Он также добавляет скрытый
input
для хранения выбранного значения, поэтому он может быть использован в форме.Входные данные:
Вывод:
Текст элемента, который должен быть заполнителем, выделен серым цветом. Заполнитель можно выбрать, если пользователь хочет отменить свой выбор. Также с помощью CSS
select
можно преодолеть все недостатки (например, невозможность стилизации параметров).Показать фрагмент кода
Обновление : я улучшил это (выбор, используя клавиши вверх / вниз / ввод), немного убрал вывод и превратил это в объект. Токовый выход:
Инициализация:
Для дальнейшего изучения: JSFiddle ,
GitHub(переименован).Обновление: я переписал это снова. Вместо использования списка, мы можем просто использовать выбор. Таким образом, он будет работать даже без JavaScript (если он отключен).
Входные данные:
Вывод:
JSFiddle , GitHub .
источник
Вам нужна проверка формы, и современные браузеры предлагают это с нуля.
Поэтому вам не нужно заботиться о том, чтобы пользователь не мог выбрать поле. Потому что, когда он делает это, проверка браузера скажет ему, что это неправильный выбор.
В браузер встроена функция проверки checkValidity () .
У Bootstrap есть и хороший пример.
HTML
Javascript
источник
источник
В Angular мы можем добавить опцию как заполнитель, который можно скрыть в выпадающем списке опций. Мы даже можем добавить собственный выпадающий значок в качестве фона, который заменяет выпадающий список браузера. значок .
Трюк заключается в включить замещающий CSS только тогда , когда значение не выбрано
/ ** Мой шаблон компонентов * /
/ ** Мой Компонент.TS * /
/**global.scss*/
источник
Решение для Angular 2
Создать ярлык поверх выбранного
и применить CSS, чтобы разместить его на вершине
pointer-events: none
позволяет отображать выбор при нажатии на метку, которая скрывается при выборе опции.угловая HTML CSS
источник
Вот мой вклад. Haml + CoffeeScript + SCSS
Haml
CoffeeScript
SCSS
Можно использовать только CSS, изменив код сервера и задав только стили классов в зависимости от текущего значения свойства, но этот способ кажется более простым и понятным.
Вы можете добавить больше CSS (
select option:first-child
), чтобы заполнитель оставался серым, когда он открывается, но мне было все равно.источник
Попробуйте это для разнообразия:
источник
Вот рабочий пример того, как этого добиться с помощью чистого JavaScript, который обрабатывает цвет параметров после первого клика:
источник
Опираясь на ответ MattW , вы можете сделать опцию выбора заполнителя видимой в раскрывающемся меню после того, как был сделан правильный выбор, условно скрывая его только тогда, когда заполнитель остается выбранным (и поэтому выбор является недействительным).
источник
Основываясь на ответе Albireo , эта версия не использует jQuery, а специфика CSS лучше.
источник