Как я могу скрыть значение по умолчанию <select> <option> при нажатии на раскрывающийся список?

Я хочу иметь элемент <select>, который по умолчанию выбран "____" . Другими словами, пустое.

Когда выпадающее меню сфокусировано, я хочу, чтобы опция "____" не была в параметрах, которые можно выбрать. Таким образом, пользователь должен выбрать что-то другое, кроме "____" в качестве опции.

Это имеет смысл?

Иллюстрации

Закрыто:

Closed select menu

Открыт:

Opened select menu

Как вы можете видеть, опция "___" отсутствует в списке при ее выборе. Это мой желаемый конечный результат.

Я попытался использовать события onFocus для удаления параметров, но это просто не сфокусирует элемент и заменяет параметр по умолчанию другим.

Ответ 1

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

К сожалению, вы не можете скрыть элементы элементов во всех браузерах. Опять же, display:none; не работает во всех браузерах на options...

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

$('option').prop('disabled', true);

Затем я использовал скрытие, где он поддерживается в браузерах, используя этот кусок CSS...

select option[disabled] {
    display: none;
}

Ответ 2

Вы можете использовать атрибут hidden в HTML. Попробуйте в этом примере

<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>

Отметьте fiddle или скриншоты ниже.

Перед нажатием кнопки: перед нажатием

После нажатия: введите описание изображения здесь

Ответ 3

CSS - ваш друг, установите отображение: none для параметра, который вы хотите скрывать.

<select>
<option style="display:none" selected="selected" value=""> </option>
<option value="visi1">Visible1</option>
<option value="visi2">Visible2</option>
<option value="visi3">Visible3</option>
</select>

Здесь дополнительный с jQuery, который гарантирует, что первая опция любого выбора невидима:

$('select:first-child').css({display:none;});