我正在使用JavaScript Constraint API来了解如何验证和提交表单。
在W3C阅读文档并编写一些代码后,有一件我不理解的特殊事情。引用文档:
列出的与表单相关的元素是约束验证的候选元素,除非条件禁止元素进行约束验证。 (例如,如果元素是输出或字段集元素,则禁止其进行约束验证。)"
我了解不应包含字段集标记 。但是当我document.querySelectorAll(:invalid)
时,输出包含Chrome和Firefox中的fieldset标记,但不包含Safari。
Chrome中的输出:[fieldset, input#email, input#telephone, input#name, textarea#message, item: function]
输出Firefox:[ <fieldset>, <input#email>, <input#telephone>, <input#name>, <textarea#message> ]
输出Safari:[<input required type="email" id="email" name="email" placeholder="Your email">,
<input required type="tel" pattern="\d+" id="telephone" namer="telephone" placeholder="Your telephone">,<input required type="text" id="name" name="name" placeholder="Your name">,
<textarea required type="tel" id="message" name="message" placeholder="Your message"></textarea>
]
任何人都可以解释为什么包含字段集吗?
我是否需要以不同的方式定位:无效错误?
当我想要定位到特定的:无效的错误消息时,我遇到了问题。
感谢。
更新
我已经通过使用willValidate属性实现了我的目标。
var invalid = form.querySelectorAll(':invalid');
for(var i = 0; i < invalid.length;i++){
if(invalid[i].willValidate){
// do stuff
}
}