Если я ввожу в текстовое поле с числовым текстом html 5 какое-то недопустимое значение, скажем, "abc", тогда программным образом установите значение в допустимое значение, оно оставит недействительный псевдокласс активным. Есть ли способ, чтобы я мог правильно его проверить?
<style>
input[type='number']:invalid { border: 1px solid red !important;}
input[type='number']:valid { border: 1px solid green !important; }
</style>
<form>
Type something invalid:
<input type='number' id='numericinput' />
<button onclick="numericinput.value = 5;" type="button">Set to valid</button>
</form>
JSfiddle для демонстрации http://jsfiddle.net/V49B3/1/
Я думаю, что лучший способ - использовать ввод с типом текста и проверить значение с помощью атрибута pattern. Вы можете найти полезное регулярное выражение на веб- сайте html5pattern.
<input type='text' id='numericinput' pattern='[0-9]*'/>
input[type='text']:invalid
. Я тоже использую Chrome, и он работает как шарм.