настраиваемый элемент формы веб-компонента для проверки ограничений

Только некоторые элементы HTMLElements поддерживают API проверки ограничений (например, HTMLButtonElement). Я хочу создать собственный веб-компонент, который также поддерживает API проверки ограничений.

Ниже приводится пример желаемого результата:

<form>
  <input name="title" required>
  <custom-form-component></custom-form-component>
</form>
<script>
  const form = document.querySelector('form');
  form.checkValidity();
</script>

custom-form-component может вызывать setCustomValidity сам по себе (на основе соответствующего контекста пользовательского ввода) и проверять себя как true или false. Таким образом, вызов form.checkValidity() должен возвращать true или false в зависимости от результата custom-form-component.

Как я нашел из документации (например, на MDN), только для некоторого элемента можно прикрепить теневой корень. Для элементов формы это невозможно. Однако только элементы формы поддерживают API проверки ограничений.

конкретный вопрос: как я могу реализовать собственный веб-компонент, который поддерживает API проверки ограничений?


person Stefan    schedule 25.09.2019    source источник


Ответы (1)


Это новое введение в веб-компоненты. По состоянию на 25 сентября 2019 года его поддерживает только Chrome 76.

Вот статья, предоставленная Google Web Devs:

https://web.dev/more-capable-form-controls/

В нем рассказывается о различных дополнениях к веб-компонентам, которые позволяют им должным образом интегрироваться в качестве элемента формы.

Это включает:

  1. Проверка формы
  2. Псевдоклассы CSS :disabled, :invalid и :valid
  3. Событие formdata
  4. И статическое свойство formAssociated, которое сообщает браузеру, что ваш элемент следует рассматривать как элемент управления формы.

Плюс несколько других вещей, которые позволяют вашему управлению работать корректно в <form>

person Intervalia    schedule 25.09.2019