Back to the index
See also the desktop table.
Last updated on 11 April 2017.
With CSS only
iOS | iOS WebView | And. 4 | AWK WebView | Chromium | Chromium WebView | UC 11 | BlackBerry 10 | Dolphin | Opera Mini | IE 11 | Edge 14 | Firefox 50 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | 10 | 9 | 10 | LG | Cy | HTC | S34 | MM | S44 | Xia | S51 | Go | 30 | 33 | 39 | 45 | 54 | 11 | 21 | ||||||||||
On form fields, fieldsets, and forms. Really ought to work on labels as well, but it doesn’t. |
Yes | Incomplete | Incomplete | Yes | Incomplete | Yes | Incomplete | Static | Incomplete | Yes | |||||||||||||||||||
These pseudo-classes are re-evaluated with every keystroke.
|
|||||||||||||||||||||||||||||
Should not work but mysteriously does sometimes. | Yes | Yes | Yes | Yes | Yes | No | No | ||||||||||||||||||||||
|
iOS | iOS WebView | And. 4 | AWK WebView | Chromium | Chromium WebView | UC 11 | BlackBerry 10 | Dolphin | Opera Mini | IE 11 | Edge 14 | Firefox 50 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | 10 | 9 | 10 | LG | Cy | HTC | S34 | MM | S44 | Xia | S51 | Go | 30 | 33 | 39 | 45 | 54 | 11 | 21 | ||||||||||
Yes | No | ? | Yes | ? | Yes | ? | Yes | ? | Yes | No | Yes | - | - | No | Yes | ||||||||||||||
Two Chromia don’t allow invalid numbers to be typed in. |
|||||||||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | - | Yes | No | Yes | |||||||||||||||||||||
note on user interaction | |||||||||||||||||||||||||||||
No | Yes | No | Yes | No | No | Yes | No | Yes | No | - | No | Yes | |||||||||||||||||
|
|||||||||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | Incomplete | Yes | |||||||||||||||||||||||
Op mini not email | |||||||||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | Incomplete | Yes | |||||||||||||||||||||||
Op mini not email | |||||||||||||||||||||||||||||
Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||||||||||||||||||||||
The invalid event is supposed to fire when the user submits the form, or on
checkValidity()
or reportValidity()
.
iOS | iOS WebView | And. 4 | AWK WebView | Chromium | Chromium WebView | UC 11 | BlackBerry 10 | Dolphin | Opera Mini | IE 11 | Edge 14 | Firefox 50 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | 10 | 9 | 10 | LG | Cy | HTC | S34 | MM | S44 | Xia | S51 | Go | 30 | 33 | 39 | 45 | 54 | 11 | 21 | ||||||||||
No | Yes | No | Yes | No | Yes | No | Yes | Yes | Untestable | Yes | |||||||||||||||||||
Some browsers don’t support |
|||||||||||||||||||||||||||||
No | No | No | No | No | Untestable | No | |||||||||||||||||||||||
It stands to reason that if we have an invalid event we should also have a valid event. Browsers are not impressed by our attempt at reasoning. We counter by not being impressed by browsers. |
iOS | iOS WebView | And. 4 | AWK WebView | Chromium | Chromium WebView | UC 11 | BlackBerry 10 | Dolphin | Opera Mini | IE 11 | Edge 14 | Firefox 50 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | 10 | 9 | 10 | LG | Cy | HTC | S34 | MM | S44 | Xia | S51 | Go | 30 | 33 | 39 | 45 | 54 | 11 | 21 | ||||||||||
Useless; same information is in validity.valid
|
Almost | Almost | Almost | Yes | Almost | Buggy | Almost | Yes | Almost | Almost | Almost | Almost | |||||||||||||||||
Also works on forms, but not on fieldsets. Almost: not on fieldset (well, always returns true)
|
|||||||||||||||||||||||||||||
Ought to pop up a native error message | No | Almost | No | Almost | No | No | Yes | Almost | No | Yes | No | No | No | Yes | |||||||||||||||
Almost: not on fieldset (well, always returns true) | |||||||||||||||||||||||||||||
Sets error message to string and assumes field is invalid | Yes | Yes | Yes | Buggy | Yes | Yes | Yes | Yes | |||||||||||||||||||||
Sets error message to string and assumes field is invalid Empty string: reset error message and assume field is valid No string: error. Stupid browsers.
|
iOS | iOS WebView | And. 4 | AWK WebView | Chromium | Chromium WebView | UC 11 | BlackBerry 10 | Dolphin | Opera Mini | IE 11 | Edge 14 | Firefox 50 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | 10 | 9 | 10 | LG | Cy | HTC | S34 | MM | S44 | Xia | S51 | Go | 30 | 33 | 39 | 45 | 54 | 11 | 21 | ||||||||||
No | Yes | No | Yes | No | * | Yes | No | Yes | Yes | No | No | Yes | |||||||||||||||||
|
|||||||||||||||||||||||||||||
attribute on forms. Suppresses error messages | No | Yes | No | Yes | No | Yes | No | Yes | Yes | Untestable | Yes | ||||||||||||||||||
|
|||||||||||||||||||||||||||||
No | No | No | No | No | No | Yes | |||||||||||||||||||||||
What I mean here is a permanent outline; not the temporary one that’s caused by the focus. |
|||||||||||||||||||||||||||||
No | Yes | No | Yes | No | Yes | No | Yes | Yes | No | No | Yes | ||||||||||||||||||
No | Yes | No | Yes | No | No | Yes | No | Yes | No | No | No | Yes | |||||||||||||||||
Some browsers don’t support |
|||||||||||||||||||||||||||||
... when ? | No | onscroll | No | onscroll | No | - | stdChr | Yes | stdChr | No | stdChr | 5s | No | No | doesn’t | ||||||||||||||
|
|||||||||||||||||||||||||||||
by returning false oninvalid | No | Yes | No | Yes | No | Yes | No | Yes | Yes | No | No | Yes | |||||||||||||||||
pattern only
|
No | No | - | Yes | No | Yes | Yes | No | No | Yes | |||||||||||||||||||
No | Terrible | No | Terrible | No | No | Terrible | No | Terrible | No | No | No | No | |||||||||||||||||
input.onblur = function () { this.reportValidity(); }
|
|||||||||||||||||||||||||||||
No | Yes | No | Yes | No | - | Yes | No | Yes | Yes | No | No | Yes | |||||||||||||||||
|
Mobile browser test array 3.3; February 2017