Можно ли применить обязательный атрибут к полям <select> в HTML5?

212

Как проверить, что пользователь выбрал что-то из поля <select> в HTML5?

Я вижу, что <select> не поддерживает новый атрибут required... должен ли я использовать JavaScript? Или там что-то не хватает?:/

  • 1
    Если вы заинтересованы в любом уровне совместимости между браузерами, вам, вероятно, придется использовать JavaScript. Нужный атрибут selectedIndex .
  • 4
    Согласно черновому варианту текущего редактора спецификации HTML5 (6 августа 2011 г.), элемент select имеет обязательный атрибут. «Обязательный атрибут - логический атрибут. Когда он указан, пользователь должен будет выбрать значение перед отправкой формы». dev.w3.org/html5/spec/Overview.html#the-select-element
Теги:
select
required

10 ответов

420
Лучший ответ

Обязательный: иметь первое значение пустым - требуется выполнение пустых значений

Предпосылки: исправьте html5 DOCTYPE и именованное поле ввода

<select name="somename" required>
<option value="">Please select</option>
<option value="one">One</option>
</select>

По документация (листинг и жирный шрифт принадлежит мне)

Требуемый атрибут - логическое атрибутов.
Когда указано, пользователь потребуется выбрать значение перед отправкой формы.

Если элемент select

  • имеет требуемый атрибут,
  • не имеет указанного множественного атрибута,
  • и имеет размер экрана 1 (не имеет SIZE = 2 или более - опустите его, если не нужно);
  • , и если значение первого элемента опции в выберите список элементов списка (если any) - это пустая строка,
  • и что элемент option parent node - это select element (а не optgroup элемент),

то этот параметр является выбрать ярлык элемента-заполнителя вариант.

  • 25
    Кроме того, чтобы пользователь не мог выбрать неопцию после ее выбора: <option selected = "selected" disabled = "disabled" value = ""> Пожалуйста, выберите </ option>
  • 2
    Это не имеет смысла ... Также это не будет работать на нескольких браузерах
Показать ещё 18 комментариев
10

Элемент <select> поддерживает атрибут required, согласно спецификации:

Какой браузер не соблюдает это?

(Конечно, вам все равно нужно проверять на сервере, поскольку вы не можете гарантировать, что у пользователей будет включен JavaScript.)

  • 8
    Я уверен, что ему просто нужно было значение = "" в первой записи - если нет атрибута значения или значения во всех опциях, требуемый сбой не запускается, потому что выборка возвращает фактическое значение
  • 1
    @mplungjan: ах , Гоча - хорошо заметный.
Показать ещё 3 комментария
3

Вы можете использовать атрибут selected для элемента выбора, чтобы выбрать выбор по умолчанию. Вы можете использовать атрибут required для элемента select, чтобы убедиться, что пользователь что-то выбрал.

В Javascript вы можете проверить свойство selectedIndex, чтобы получить индекс выбранного параметра, или вы можете проверить свойство value, чтобы получить значение выбранного параметра.

В соответствии с спецификацией HTML5 selectedIndex "возвращает индекс первого выбранного элемента, если он есть, или -1, если нет выбранного элемента. И value" возвращает значение первого выбранного элемента, если любая или пустая строка, если не выбран выбранный элемент. "Так что если selectedIndex = -1, то вы знаете, что они ничего не выбрали.

<button type="button" onclick="displaySelection()">What did I pick?</button>
<script>
    function displaySelection()
    {
        var mySelect = document.getElementById("someSelectElement");
        var mySelection = mySelect.selectedIndex;
        alert(mySelection);
    }
</script>
  • 1
    @Apostle - Пожалуйста, перестаньте пытаться изменить этот ответ с помощью правок. Если вы считаете, что это неправильно, не стесняйтесь оставлять свой ответ.
  • 0
    @BradLarson Сначала я не совсем понял: код не является полным решением проблемы в этом вопросе или является пояснительным примером к последнему абзацу этого ответа. Вероятно, второй в этом случае. Я думаю, лучше организовать этот код как фрагмент и показать результат -1 . Извините, я не уточнил в комментариях в первую очередь.
2

Да, он работает:

<select name="somename" required>
     <option value="">Please select</option>
     <option value="one">One</option>
</select>

вам нужно оставить первый вариант пустым.

0

сначала вам нужно назначить пустое значение в первом варианте. т.е. выберите здесь. Требуется только требуемое.

0

В html5 вы можете использовать полное выражение:

<select required="required">

Я не знаю, почему короткое выражение не работает, но попробуйте это. Это решит.

  • 0
    не работает для меня
0
<form action="">

<select required>

  <option selected disabled value="">choose</option>
  <option value="red">red</option>
  <option value="yellow">yellow</option>
  <option value="green">green</option>
  <option value="grey">grey</option>

</select>
<input type="submit">
</form>
  • 3
    Этот ответ просто повторяет предыдущий пример без дополнительного объяснения.
-2

Сделать значение первого элемента поля выбора пустым.

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

<select name="user_role" required>
    <option value="">-Select-</option>
    <option value="User">User</option>
    <option value="Admin">Admin</option>
</select>
-5

Попробуйте это

<select>
<option value="" style="display:none">Please select</option>
<option value="one">One</option>
</select>
-7

Вы можете сделать это также динамически с помощью JQuery

Установите требуемый

$("#select1").attr('required', 'required');

Удалить требуемый

$("#select1").removeAttr('required');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню