519

我只是想知道如何在单选按钮上以正确的方式使用新的 HTML5 输入属性“必需”。每个单选按钮字段是否都需要像下面这样的属性,或者如果只有一个字段获得它就足够了?

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

5 回答 5

888

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>

还要注意:

为了避免混淆是否需要单选按钮组,鼓励作者在组中的所有单选按钮上指定属性。实际上,一般来说,鼓励作者首先避免使用没有任何初始检查控件的单选按钮组,因为这是用户无法返回的状态,因此通常被认为是糟糕的用户界面。

来源

于 2011-11-27T18:31:12.177 回答
8

我必须使用required="required"相同的名称和类型,然后验证工作正常。

<input type="radio" name="user-radio"  id="" value="User" required="required" />

<input type="radio" name="user-radio" id="" value="Admin" />

<input type="radio" name="user-radio" id="" value="Guest" /> 
于 2020-02-06T18:28:01.470 回答
5

这是一个非常基本但现代的必需单选按钮实现,带有原生 HTML5 验证:

fieldset { 
  display: block;
  margin-left: 0;
  margin-right: 0;
  padding-top: 0;
  padding-bottom: 0;
  padding-left: 0;
  padding-right: 0;
  border: none;
}
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>
  <fieldset>
  <legend>Gender</legend>
  <div class="checkboxes">
    <label for="male"><input id="male" type="radio" name="gender" value="male" class="hidden" required="required"><span>Male</span></label>
    <label for="female"><input id="female" type="radio" name="gender" value="female" class="hidden" required="required"><span>Female </span></label>
    <label for="other"><input id="other" type="radio" name="gender" value="other" class="hidden" required="required"><span>Other</span></label>
  </div>
  </fieldset>
  <input type="submit" value="Send" />
</form>

尽管我非常喜欢使用原生 HTML5 验证的简约方法,但从长远来看,您可能希望将其替换为 Javascript 验证。Javascript 验证使您可以更好地控制验证过程,它允许您设置真实类(而不是伪类)以改进(无效)字段的样式。这种原生 HTML5 验证可以作为您在 Javascript 损坏(或缺少)的情况下的后备方案。你可以在这里找到一个例子,以及其他一些关于如何制作更好的表单的建议,这些建议是受Andrew Cole启发的。

于 2018-09-14T09:42:03.567 回答
5

您可以使用此代码段...

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

在选择语句之一中指定“ required ”关键字。如果要更改其外观的默认方式。您可以按照以下步骤操作。如果您有任何修改默认行为的意图,这只是为了提供额外信息。

将以下内容添加到您的.css文件中。

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

有关更多信息,您可以参考以下 URL。

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

于 2019-04-06T04:32:51.437 回答
-2

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

于 2021-12-22T08:43:18.410 回答