这可能是一个初学者的问题,所以提前道歉... HTML5规范是否定义了用户代理如何响应HTML5 required属性(或者由他们自己决定)?换句话说,是否有任何具体的规则来定义用户代理应该如何行事(例如,“用户应该被告知必填字段的存在”;“当用户提交表单时,必填控件应该被验证,并在它们没有值的情况下显示错误消息”等)?HTML5规范似乎提供了一些模糊的指导方针,但没有具体内容。
规范规定,当必填元素的值为空字符串时:该元素处于丢失状态。如果我们查看“约束条件”部分(解释了“丢失”的含义),则会告诉我们:一个元素可以定义自定义有效性错误消息。最初,一个元素必须将其自定义有效性错误消息设置为空字符串。当其值不是空字符串时,该元素存在自定义错误。它可以使用“setCustomValidity()”方法进行设置。用户代理应在提示控件问题时使用自定义有效性错误消息。把如何显示此消息的具体实现留给浏览器是有意义的,这样他们可以将其融入到当前的样式和用户体验中。这里有示例(屏幕截图)展示了浏览器处理差异,还包括浏览器兼容性信息。