以前我使用聚合物1,为了进行一些自定义验证,我已将以下代码与queryselectorAll一起使用以获取所有无效元素
var _formTag = this.$$("request-details").$$("#newForm");
_array = Array.prototype.slice.call(_formTag.querySelectorAll(":invalid"),0);
现在,我正在升级到聚合物3,它不能与queryselectorAll一起使用,因为所有无效输入现在都由shadowroot包裹了。因为我们有更多数量的按需表单元素,所以使用id逐一处理元素并遍历影子根将非常困难。建议我有办法获取页面中所有无效的元素。
您可以以这种形式获取所有需要验证的元素,然后按如下所示过滤无效的元素
var elements = this.$.newForm._getValidatableElements();
var invalidElements = elements.filter(x => x.invalid);