HTML 属性:required

required 布尔属性(如果存在)表示用户在提交输入所属的表单前必须为其指定一个值。

textsearchurltelemailpassworddatemonthweektimedatetime-localnumbercheckboxradiofile <input> 类型以及 <select><textarea> 表单控件元素均支持 required 属性。如果这些输入类型和元素中出现了该属性,则会匹配 :required 伪类。如果不包含该属性,则会匹配 :optional 伪类。

rangecolor 不支持该属性,也与之无关,因为两者都有默认值。color 的默认值为 #000000range 的默认值为 minmax 之间的中点,如果没有声明,在大多数浏览器中,minmax 的默认值分别是 0 和 100。hidden 也不支持该属性,因为用户不可能填写隐藏的表单。required 属性也不支持任何按钮 input 类型,包括 image

对于由 radio 按钮组成的同名组,如果该组中的某个单选按钮具有 required 属性,则必须选中该组中的某个单选按钮,但该单选按钮不一定是应用了该属性的单选按钮。为改善代码维护,建议在组中的每个同名单选按钮中都包含 required 属性,否则一个都不包含。

如果是同名的一组 checkbox 输入类型,则只有带有 required 属性的复选框是必选的。

备注:设置 aria-required="true" 会告诉屏幕阅读器某个元素(任何元素)是必需的,但与元素的可选性无关。

属性交互

由于只读字段不能更改,因此 required 对同时指定了 readonly 属性的输入没有任何影响。

可用性

在包含 required 属性时,应在控件附近提供可见提示,告知用户 <input><select><textarea> 为必填项。此外,使用 :required 伪类来定位必填表单控件,并对其进行样式设计,以表明它们是必填的。这可以提高视力正常用户的可用性。辅助技术应根据 required 属性告知用户表单控件是必填的,但添加 aria-required="true" 也无妨,以避免浏览器/屏幕阅读器组合还不支持 required

约束验证

如果元素为必填元素,且元素值为空字符串,则该元素会受到 valueMissing 的影响,元素将匹配 :invalid 伪类。

无障碍考虑

向用户提供提示,告知他们特定表单控件是必填的。确保信息传递是多方面的,例如通过文字、颜色、标记和属性,这样,无论用户是色盲、存在认知差异还是使用了屏幕阅读器,都能理解相关要求。

示例

HTML

html
<form>
  <div class="group">
    <input type="text" />
    <label>普通</label>
  </div>
  <div class="group">
    <input type="text" required />
    <label>必需</label>
  </div>
  <input type="submit" />
</form>

结果

参见