Вы можете использовать: действительные и: недействительные селекторы. Как то так
.field:valid {
border-color:#0f0;
}
.field:invalid {
border-color:#f00;
}
Однако это будет работать только в браузерах, которые поддерживают собственную проверку, и только для полей, которые имеют смысл. Насколько я знаю, сейчас это означает только Chrome (возможно, Safari, но еще не проверял).
Таким образом, под собственной проверкой я имею в виду, что в chrome, если вы выполните <input type="email">
, значение поля будет проверено для строки типа электронной почты (без какого-либо дополнительного javascript), поэтому приведенные выше стили будут работать. Однако, если бы вы прикрепили их к полю type="text"
или второму полю пароля (то есть предположим, что оно совпадает с первым), вы бы получили зеленый цвет только потому, что все верно, а в случае пароля есть во всяком случае, нет «типа» для этого.
Что в основном означает, что для поддержки всех браузеров и, что более важно, более широкого массива проверок вам все равно придется прибегнуть к javascript, и в этом случае назначение класса .valid / .invalid не должно быть проблемой. :)