:user-valid (:-moz-ui-valid)

The :user-valid CSS pseudo-class represents any validated form element whose value validates correctly based on its validation constraints. However, unlike :valid it only matches once the user has interacted with it.

Note: The pseudo-class behaves in the same way as the non-standard :-moz-ui-valid pseudo-class.

This pseudo-class is applied according to the following rules:

The result is that if the control was valid when the user started interacting with it, the validity styling is changed only when the user shifts focus to another control. However, if the user is trying to correct a previously-flagged value, the control shows immediately when the value becomes valid. Required items are flagged as invalid only if the user changes them or attempts to submit an unchanged invalid value.

Syntax

:user-valid

Examples

Setting a color and symbol on :user-valid

In the following example, the green border and ✅ only display once the user has interacted with the field. Try changing the email address to another valid email to see it in action.

<form>
  <label for="email">Email *: </label>
  <input id="email" name="email" type="email" value="test@example.com" required>
  <span></span>
</form>
input:user-valid {
  border: 2px solid green;
}

input:user-valid + span::before {
  content: '✓';
  color: green;
}

Specifications

Specification
Selectors Level 4
# user-valid-pseudo

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
:user-valid
No
No
88
4
No
No
No
No
No
88
4
No
No
No

See also

https://developer.mozilla.org/en-US/docs/Web/CSS/:user-valid