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

StackOverflow https://stackoverflow.com/questions/6048710

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Если выбранный элемент

  • имеет указанный обязательный атрибут,
  • не имеет указанного множественного атрибута,
  • и имеет размер отображения 1 (не используйте РАЗМЕР =2 или больше - опустите его, если он не нужен);
  • и если значение первого элемента option в списке опций элемента select (если таковые имеются) является пустой строкой (т.е.присутствует как value=""),
  • и родительским узлом этого элемента option является элемент select (а не элемент optgroup ),

тогда этот параметр является параметром метки-заполнителя элемента select .

Другие советы

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

Какой браузер этого не учитывает?

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

Вы можете использовать selected атрибут для элемента option для выбора варианта по умолчанию.Вы можете использовать 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>

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

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

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

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

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

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

Таким образом, когда каждый раз вы публикуете ФОРМУ, вы получаете пустое значение, и, используя этот способ, вы бы знали, что пользователь ничего не выбрал из выпадающего списка.

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

Вам нужно установить value атрибут option к пустой строке:

<select name="status" required>
    <option selected disabled value="">what's your status?</option>
    <option value="code">coding</option>
    <option value="sleep">sleeping</option>
</select>

select вернет value из выбранных option на сервер, когда пользователь нажимает submit на form.Пустой value это то же самое, что пустой text ввод -> повышение required сообщение.


w3школы

Атрибут value указывает значение, которое будет отправлено на сервер при отправке формы.

Пример

попробуй это, это сработает, я пробовал это, и это работает.

<!DOCTYPE html>
<html>
<body>

<form action="#">
<select required>
  <option value="">None</option>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>
<input type="submit">
</form>

</body>
</html>

В html5 вы можете сделать это, используя полное выражение:

<select required="required">

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

Попробуй это

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

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

Требуемый набор

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

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

$("#select1").removeAttr('required');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top