запросить все элементы (queryselectorall) на странице в полимере 3 не работает из-за теневого элемента - PullRequest
0 голосов
/ 05 ноября 2019

Ранее я использовал полимер 1, для некоторой пользовательской проверки я использовал следующий код с queryselectorAll, чтобы получить все недопустимые элементы

            var _formTag = this.$$("request-details").$$("#newForm");
           _array = Array.prototype.slice.call(_formTag.querySelectorAll(":invalid"),0);

Теперь я делаю обновление до полимера 3, и он не работает сqueryselectorAll, поскольку все недопустимые входные данные теперь обернуты с помощью shadowroot. Обрабатывать элементы один за другим с использованием идентификатора и обхода теневого корня будет непросто, поскольку у нас больше элементов формы по требованию. Предложите мне любую идею, чтобы получить все недействительные элементы на странице.

1 Ответ

0 голосов
/ 14 ноября 2019

Вы можете получить все элементы в этой форме, которые необходимо проверить, а затем отфильтровать недействительные, как показано ниже

var elements = this.$.newForm._getValidatableElements();
var invalidElements = elements.filter(x => x.invalid);
...