В HTML-формах часто используют <select> для выбора приоритета или срочности заявки.
Обычно в начале добавляют пункт-подсказку:
—— Срочность ——
Но стандартный вариант имеет проблему: этот текст появляется в выпадающем списке, что выглядит неаккуратно.
Разберем:
стандартный <select>
улучшенный вариант с скрытым placeholder
подсветка select после выбора
динамический индикатор цвета и текста
<select name="terminovist" style="width:100%">
<option>---- Срочность ------</option>
<option value="low">Низкая</option>
<option value="medium">Средняя</option>
<option value="high">Высокая</option>
<option value="critical">Критическая</option>
</select>
Минусы:
Пункт-подсказка появляется в списке
Его можно выбрать повторно
Не видно реальный выбор
<select name="terminovist" style="width:100%">
<option value="" selected hidden>---- Срочность ------</option>
<option value="low">Низкая</option>
<option value="medium">Средняя</option>
<option value="high">Высокая</option>
<option value="critical">Критическая</option>
</select>
selected — показывает текст по умолчанию
hidden — не отображает пункт в списке
value="" — корректный placeholder для форм
<style>
select { color: #999; }
select.low { color: green; }
select.medium { color: #555; }
select.high { color: orange; }
select.critical { color: red; font-weight: bold; }
</style>
<select name="terminovist" id="terminovist" style="width:200px">
<option value="" selected hidden>---- Срочность ------</option>
<option value="low">Низкая</option>
<option value="medium">Средняя</option>
<option value="high">Высокая</option>
<option value="critical">Критическая</option>
</select>
<script>
const select = document.getElementById('terminovist');
select.addEventListener('change', function () {
this.className = '';
if (this.value) {
this.classList.add(this.value);
}
});
</script>
<style>
#statusText { font-weight: 600; }
.status-box { width: 16px; height: 16px; border-radius: 3px; background: #ccc; }
.low { color: #a4ffa4; }
.medium { color: #1efb1e; }
.high { color: yellow; }
.critical { color: red; }
.box-low { background: #a4ffa4; }
.box-medium { background: #1efb1e; }
.box-high { background: yellow; }
.box-critical { background: red; }
</style>
<div style="display:flex; align-items:center; gap:10px;">
<select name="terminovist" id="terminovist" style="width:200px">
<option value="" selected hidden>---- Срочность ------</option>
<option value="low" style="background: #a4ffa4;">Низкая</option>
<option value="medium" style="background: #1efb1e;">Средняя</option>
<option value="high" style="background: yellow;">Высокая</option>
<option value="critical" style="background: red;">Критическая</option>
</select>
<span id="statusText">Срочность:</span>
<span id="statusBox" class="status-box"></span>
</div>
<script>
const select = document.getElementById('terminovist');
const statusText = document.getElementById('statusText');
const statusBox = document.getElementById('statusBox');
select.addEventListener('change', function () {
statusText.className = '';
statusBox.className = 'status-box';
if (!this.value) {
statusText.textContent = 'Срочность:';
return;
}
statusText.classList.add(this.value);
statusBox.classList.add('box-' + this.value);
const selectedText = this.options[this.selectedIndex].text;
statusText.textContent = `${selectedText}`;
});
</script>
Результат
Текст «Срочность» меняет цвет в зависимости от выбора
Квадратик показывает цвет срочности
Текст динамически показывает выбранное значение
При смене выбора все обновляется автоматически
Хуки активации и инициализации в WordPress: Где и когда создавать таблицы
60
Как создать собственное меню в админке WordPress: простое руководство для новичков
84
Кастомизация страницы входа в WordPress: логотип, цвета, фоновая картинка и собственный CSS
122
Как изменить или полностью убрать текст в подвале (футере) админ-панели WordPress
98
Как добавить выбор отдела для пользователей в WordPress и выводить его на сайте
93
Добавление мета-описания и ключевых слов в WordPress 519
Как обнаружить блокировщик рекламы на сайте с помощью JavaScript 204
Минимальная сумма заказа WooCommerce 181
Как добавить виджет для валют на панель администратора WordPress 154
Как добавить поле «Отдел» и ограничить видимость категорий в WordPress 150
Добавить комментарий