Як використовувати атрибут "обов'язковий" з полем для введення "радіо"


409

Мені просто цікаво, як правильно використати новий вхідний атрибут HTML5 "необхідний" на кнопках радіо. Чи потрібне кожному поле перемикача атрибут, як показано нижче, чи достатньо, якщо його отримує лише одне поле?

<input type="radio" name="color" value="black" required="required" />
<input type="radio" name="color" value="white" required="required" />

Відповіді:


691

TL; DR: встановлення requiredатрибуту принаймні для одного входу радіогрупи.


Налаштування requiredдля всіх входів більш чітке, але не потрібне (якщо не динамічно створювати радіо-кнопки).

Для групування перемикачів всі вони повинні мати однакове nameзначення. Це дозволяє вибирати лише одного за один раз і стосується requiredвсієї групи.

<form>
  Select Gender:<br>

  <label>
    <input type="radio" name="gender" value="male" required>
    Male
  </label><br>

  <label>
    <input type="radio" name="gender" value="female">
    Female
  </label><br>

  <label>
    <input type="radio" name="gender" value="other">
    Other
  </label><br>

  <input type="submit">
</form>

Також врахуйте:

Щоб уникнути плутанини щодо того, потрібна чи ні група перемикачів, авторам рекомендується вказати атрибут на всіх перемикачах групи. Дійсно, в цілому авторам рекомендується уникати в першу чергу груп перемикачів, які не мають спочатку перевірених елементів керування, оскільки це стан, до якого користувач не може повернутися, і тому зазвичай вважається поганим інтерфейсом користувача.

Джерело


1
@kumar_harsh: Будь-який прапорець, позначений як потрібний, повинен бути встановлений. Крім того, маркування потрібного прапорця не впливає на будь-які інші прапорці (те саме ім’я чи ні). Немає простої розмітки, яка б вказувала, що "вказати ці" прапорці x з тим самим іменем ", принаймні один повинен бути встановлений.
Бред Кент

3
@Davdriver так, ви можете вказати його на всіх радіо кнопок, якщо хочете. Насправді w3c писав: Щоб уникнути плутанини щодо того, потрібна чи ні група перемикачів, авторам рекомендується вказати атрибут на всіх перемикачах групи. (див. w3.org/TR/html5/forms.html#the-required-attribute відповідно до кодового прикладу )
Сейбсен

1
Вибачте, але наступне - це ціла купа випусків: Дійсно, загалом авторам рекомендується уникати в першу чергу груп радіо кнопок, які не мають спочатку перевірених елементів керування, оскільки це стан, до якого користувач не може повернутися, і тому, як правило, вважається поганим інтерфейсом користувача. Чому? Оскільки відсутні спочатку перевірені елементи керування - це абсолютно допустимий випадок (UX).
PussInBoots

2
Я також хотів би додати, що в деяких випадках радіо кнопки, які не мають ініціалізованого "перевіреного" стану, є дуже хорошою справою, і хороший UX. У моєму випадку користувач повинен спочатку класифікувати якийсь об’єкт на основі напівдовгого списку відповідей "так / ні". Неправильне відповіді на ці запитання негативно вплине на логіку нижче. Тому я не можу за замовчуванням відповіді або "Так", "ні", оскільки вони будуть різними для кожного об'єкта, який користувач класифікує. Можливо, вони пропустили б одну, яку потрібно змінити і ввести погані дані в БД. Або завдання перервати і не знати, де вони зупинилися.
Джоел Вігтон

1
@Seybsen Nah, "взагалі" вказує, що це не є абсолютом. Але ці органи зі стандартів ніколи не наводять прикладів, коли насправді було б поганим користувальницьким інтерфейсом, щоб використовувати їх рекомендації, тому я хотів надати його. Вони виглядають так, як якщо ви користуєтесь ним, ви не замислювалися над своїм UX. Я хочу, щоб інші розробники мали впевненість у виборі продуманого дизайну, а не просто сліпою дефолтом кожної радіо кнопки.
Джоел Вігтон

4

Ви можете використовувати цей фрагмент коду ...

<html>
  <body>
     <form>
          <input type="radio" name="color" value="black" required />
          <input type="radio" name="color" value="white" />
          <input type="submit" value="Submit" />
    </form>
  </body>
</html>

Вкажіть ключове слово " обов'язкове " в одному з операторів вибору . Якщо ви хочете змінити типовий спосіб його появи. Ви можете виконати ці кроки. Це лише для отримання додаткової інформації, якщо ви маєте намір змінити поведінку за замовчуванням.

Додайте у свій .cssфайл наступне .

/* style all elements with a required attribute */
:required {
  background: red;
}

Для отримання додаткової інформації можна звернутися за наступною URL-адресою.

https://css-tricks.com/almanac/selectors/r/required/


3

Якщо ваші радіо кнопки були налаштовані, наприклад, оригінальний значок перемикача був прихований через css, display:noneщоб ви могли створити власну радіо-кнопку, то, можливо, ви отримаєте помилку.

Спосіб виправити це - замінити display:noneнаopacity:0


Я думаю, ви маєте на увазі, що повідомлення про помилки веб-переглядача не видно, якщо перемикач прихований через display:none. Ось уже відповів тут: stackoverflow.com/questions/49687229 / ...
Seybsen

1

Ось дуже основна, але сучасна реалізація необхідних радіо кнопок з нативною валідацією HTML5:

body {font-size: 15px; font-family: serif;}
input {
  background: transparent;
  border-radius: 0px;
  border: 1px solid black;
  padding: 5px;
  box-shadow: none!important;
  font-size: 15px; font-family: serif;
}
input[type="submit"] {padding: 5px 10px; margin-top: 5px;}
label {display: block; padding: 0 0 5px 0;}
form > div {margin-bottom: 1em; overflow: auto;}
.hidden {
  opacity: 0; 
  position: absolute; 
  pointer-events: none;
}
.checkboxes label {display: block; float: left;}
input[type="radio"] + span {
  display: block;
  border: 1px solid black;
  border-left: 0;
  padding: 5px 10px;
}
label:first-child input[type="radio"] + span {border-left: 1px solid black;}
input[type="radio"]:checked + span {background: silver;}
<form>

  <div>
    <label for="name">Name (optional)</label>
    <input id="name" type="text" name="name">
  </div>

  <label>Gender</label>
  <div class="checkboxes">
    <label><input id="male" type="radio" name="gender" value="male" class="hidden" required><span>Male</span></label>
    <label><input id="female" type="radio" name="gender" value="male" class="hidden" required><span>Female </span></label>
    <label><input id="other" type="radio" name="gender" value="other" class="hidden" required><span>Other</span></label>
  </div>

  <input type="submit" value="Send" />

</form>

Хоча я є великим прихильником мінімалістичного підходу використання нативної перевірки HTML5, ви, можливо, захочете замінити його на перевірку Javascript у довгостроковій перспективі. Перевірка Javascript надає набагато більший контроль над процесом перевірки, і дозволяє встановлювати реальні класи (замість псевдокласів) для поліпшення стилізації (в) дійсних полів. Ця вроджена перевірка HTML5 може стати вашим запасним результатом у разі поломки (або відсутності) Javascript. Ви можете знайти приклад цього тут , а також деякі інші пропозиції щодо того, як зробити кращі форми , натхненні Ендрю Коулом .


0

Мені довелося використовувати required="required"разом з тим же ім’ям і типом, ніж перевірка добре працювала.

input type="radio" name="userradio"  id="" value="User" required="required"

input type="radio" name="userradio" id="" value="Admin" 

input type="radio" name="userradio" id="" value="Guest" 

1
Це допоможе, якби ви відформатували свою відповідь і пояснили, чому це працює.
Джо Лісснер

1
погодився w @JoeLissner. Будь ласка, відформатуйте свій код як такий за допомогою наданих інструментів.
Сан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.