如何在“无线电”输入字段中使用“必需”属性


409

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

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

Answers:


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代码示例
Seybsen

1
很抱歉,以下是一堆废话:实际上,通常,鼓励作者避免单选按钮组首先没有任何初始检查的控件,因为这是用户无法返回的状态,并且因此通常被认为是不良的用户界面。为什么?因为没有最初检查的控件是完全有效(UX)的情况。
PussInBoots

1
我还要补充一点,在某些情况下,没有初始化“检查”状态的单选按钮是一件非常好的事情,并且是不错的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>

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

将以下内容添加到您的.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:noneopacity: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验证使您可以更好地控制验证过程,并允许您设置真实的类(而不是伪类)来改善(有效)字段的样式。如果Javascript损坏(或缺少),则可以使用本机HTML5验证。您可以在这里找到一个示例,以及受安德鲁·科尔Andrew Cole)启发的其他一些有关如何制作更好形式的建议。


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
如果您格式化答案并说明其作用,将会很有帮助。
Joe Lissner

1
@JoeLissner同意。请使用提供的工具格式化您的代码。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.