用户代理应该如何处理HTML5的required属性?

4
这可能是一个初学者的问题,所以提前道歉... HTML5规范是否定义了用户代理如何响应HTML5 required属性(或者由他们自己决定)?换句话说,是否有任何具体的规则来定义用户代理应该如何行事(例如,“用户应该被告知必填字段的存在”;“当用户提交表单时,必填控件应该被验证,并在它们没有值的情况下显示错误消息”等)?
HTML5规范似乎提供了一些模糊的指导方针,但没有具体内容。

1
这是一个有趣的问题,但我认为最好的解释是HTML5规范本身。可能当它更多地投入实践时,它会更加充实。不过,如果有人能证明我错了并提供一些详细的文档,我会很感兴趣的。 - Nix
1个回答

5
规范规定,当必填元素的值为空字符串时:
该元素处于丢失状态。
如果我们查看“约束条件”部分(解释了“丢失”的含义),则会告诉我们:
一个元素可以定义自定义有效性错误消息。最初,一个元素必须将其自定义有效性错误消息设置为空字符串。当其值不是空字符串时,该元素存在自定义错误。它可以使用“setCustomValidity()”方法进行设置。用户代理应在提示控件问题时使用自定义有效性错误消息。
把如何显示此消息的具体实现留给浏览器是有意义的,这样他们可以将其融入到当前的样式和用户体验中。
这里有示例(屏幕截图)展示了浏览器处理差异,还包括浏览器兼容性信息。

谢谢!我觉得奇怪的是规范中说“元素可以有自定义有效性错误消息”,而不是“元素必须有自定义有效性错误消息”……这使得它听起来好像没有任何要求让用户代理以任何方式做出响应。这真的是这样吗? - user1138681
@user1138681 - 我认为如果您没有提供自定义消息,浏览器会提供默认的有效性错误消息(就像屏幕截图中显示的那样)。没有必要有一个自定义错误消息的要求。 - James Allardice

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接