Validation
Provide valuable, actionable feedback to your users with HTML5 form validation, via browser default behaviors or custom styles and JavaScript.
On this page
AccessibilityLink to this section: Accessibility
Ensure that all form components have an appropriate accessible name so that their purpose can be conveyed to users of assistive technologies. The simplest way to achieve this is to use a <label> element, or—in the case of buttons—to include sufficiently descriptive text as part of the <button>...</button> content.
For situations where it’s not possible to include a visible <label> or appropriate text content, there are alternative ways of still providing an accessible name, such as:
<label>elements hidden using the.visually-hiddenclass- Pointing to an existing element that can act as a label using
aria-labelledby - Providing a
titleattribute - Explicitly setting the accessible name on an element using
aria-label
While using visually hidden content (.visually-hidden, aria-label, and even placeholder content, which disappears once a form field has content) will benefit assistive technology users, a lack of visible label text may still be problematic for certain users. Some form of visible label is generally the best approach, both for accessibility and usability.
How it worksLink to this section: How it works
Here’s how form validation works with OUDS Web:
- HTML form validation is applied via CSS’s two pseudo-classes,
:invalidand:valid. It applies to<input />,<select>, and<textarea>elements. - OUDS Web scopes the
:invalidand:validstyles to parent.was-validatedclass, usually applied to the<form>. Otherwise, any required field without a value shows up as invalid on page load. This way, you may choose when to activate them (typically after form submission is attempted). - To reset the appearance of the form (for instance, in the case of dynamic form submissions using Ajax), remove the
.was-validatedclass from the<form>again after submission.
- As a fallback,
.is-invalidand.is-validclasses may be used instead of the pseudo-classes. They do not require a.was-validatedparent class. - All modern browsers support the constraint validation API, a series of JavaScript methods for validating form controls.
- Feedback messages may utilize the browser defaults (different for each browser, and unstylable via CSS) or our custom feedback styles with additional HTML and CSS.
- You may provide custom validity messages with
setCustomValidityin JavaScript.