<?xml version="1.0" encoding="UTF-8"?>
<feature id="constraint-validation"><name>Constraint validation API</name><description>Methods that validate form controls before submission, such as checkValidity(), reportValidity() and setCustomValidity().</description><group>forms</group><group_name>Forms</group_name><baseline><status>widely</status><low_date>2018-12-11</low_date><high_date>2021-06-11</high_date></baseline><support><browser name="chrome" version="40" supported="true"></browser><browser name="firefox" version="51" supported="true"></browser><browser name="safari" version="10.1" supported="true"></browser><browser name="edge" version="18" supported="true"></browser><browser name="chrome_android" version="40" supported="true"></browser><browser name="firefox_android" version="64" supported="true"></browser><browser name="safari_ios" version="10.3" supported="true"></browser></support><specifications><spec>https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#the-constraint-validation-api</spec></specifications><caniuse><id>constraint-validation</id></caniuse><mdn_url>https://developer.mozilla.org/docs/Web/API/ValidityState</mdn_url><compat_features><key>api.HTMLButtonElement.checkValidity</key><key>api.HTMLButtonElement.reportValidity</key><key>api.HTMLButtonElement.setCustomValidity</key><key>api.HTMLButtonElement.validationMessage</key><key>api.HTMLButtonElement.validity</key><key>api.HTMLButtonElement.willValidate</key><key>api.HTMLFieldSetElement.checkValidity</key><key>api.HTMLFieldSetElement.reportValidity</key><key>api.HTMLFieldSetElement.setCustomValidity</key><key>api.HTMLFieldSetElement.validationMessage</key><key>api.HTMLFieldSetElement.validity</key><key>api.HTMLFieldSetElement.willValidate</key><key>api.HTMLFormElement.checkValidity</key><key>api.HTMLFormElement.reportValidity</key><key>api.HTMLInputElement.checkValidity</key><key>api.HTMLInputElement.reportValidity</key><key>api.HTMLInputElement.setCustomValidity</key><key>api.HTMLInputElement.validationMessage</key><key>api.HTMLInputElement.validity</key><key>api.HTMLInputElement.willValidate</key><key>api.HTMLObjectElement.checkValidity</key><key>api.HTMLObjectElement.reportValidity</key><key>api.HTMLObjectElement.setCustomValidity</key><key>api.HTMLObjectElement.validationMessage</key><key>api.HTMLObjectElement.validity</key><key>api.HTMLObjectElement.willValidate</key><key>api.HTMLOutputElement.checkValidity</key><key>api.HTMLOutputElement.reportValidity</key><key>api.HTMLOutputElement.setCustomValidity</key><key>api.HTMLOutputElement.validationMessage</key><key>api.HTMLOutputElement.validity</key><key>api.HTMLOutputElement.willValidate</key><key>api.HTMLSelectElement.checkValidity</key><key>api.HTMLSelectElement.reportValidity</key><key>api.HTMLSelectElement.setCustomValidity</key><key>api.HTMLSelectElement.validationMessage</key><key>api.HTMLSelectElement.validity</key><key>api.HTMLSelectElement.willValidate</key><key>api.HTMLTextAreaElement.checkValidity</key><key>api.HTMLTextAreaElement.reportValidity</key><key>api.HTMLTextAreaElement.setCustomValidity</key><key>api.HTMLTextAreaElement.validationMessage</key><key>api.HTMLTextAreaElement.validity</key><key>api.HTMLTextAreaElement.willValidate</key><key>api.ValidityState</key><key>api.ValidityState.badInput</key><key>api.ValidityState.customError</key><key>api.ValidityState.patternMismatch</key><key>api.ValidityState.rangeOverflow</key><key>api.ValidityState.rangeUnderflow</key><key>api.ValidityState.stepMismatch</key><key>api.ValidityState.tooLong</key><key>api.ValidityState.tooShort</key><key>api.ValidityState.typeMismatch</key><key>api.ValidityState.valid</key><key>api.ValidityState.valueMissing</key></compat_features><canonical_url>https://nowyoucanuse.com/features--constraint-validation.html</canonical_url></feature>