Подтвердить что ты не робот

HTML5 Требуемый стиль ввода

В HTML 5 мы можем пометить входы как required, а затем выбрать их с помощью псевдо-селектора [required] в CSS. Но я хочу только стилизовать их, когда они пытаются отправить форму без заполнения требуемого элемента. Есть ли селектор для этого? Как насчет появляющегося окна сообщений?

4b9b3361

Ответ 1

Да, поскольку SLaks сказал, что для этого нет селектора CSS. Я бы сомневался, что это когда-либо будет в рамках CSS, потому что CSS нужно будет проверить содержимое ввода.

Самый лучший вариант - это, вероятно, вызов функции проверки javascript при нажатии кнопки, а не отправки формы. Затем проверьте поля [обязательные] для соответствующего содержимого и либо отправьте форму, либо выделите необходимые поля, которые не были заполнены.

В JQuery есть несколько приятных плагинов, которые позаботятся об этом для вас http://docs.jquery.com/Plugins/validation

Ответ 2

Вы можете использовать: valid и: invalid selectors. Что-то вроде этого

.field:valid {
    border-color:#0f0;
}
.field:invalid {
    border-color:#f00;
}

Однако это будет работать только в браузерах, которые поддерживают встроенную проверку, и только для полей, которые имеют смысл. Насколько я знаю, прямо сейчас, что только средства Chrome (возможно, Safari, но не проверены).

Итак, по встроенной проверке я имею в виду, что в chrome, если вы выполняете <input type="email">, значение поля будет проверено на строку типа email (без какого-либо дополнительного javascript), поэтому стили выше будут работать. Однако, если вы должны были привязать их к полю type="text" или ко второму паролю (которое должно совпадать с первым), вы бы только стали зелеными, потому что все действительно, а в случае пароля no "type" для этого в любом случае.

В основном это означает, что для поддержки всех браузеров и, что более важно, более широкого массива проверок вам все равно придется прибегать к javascript, и в этом случае назначение класса .valid/.invalid не должно быть проблемой.:)

Ответ 3

Я прибегал к использованию js для применения класса .validated к форме на submit, затем используйте этот класс для стиля: invalid fields.eg:

.validated input:invalid { ... }

В этом случае поля не отображаются как недопустимые при загрузке страницы, только после отправки формы. В идеале был бы псевдокласс, применяемый к форме на submit.

Ответ 4

Там a :user-error псевдокласс в CSS Selectors 4 рабочий проект, который будет делать именно это, стреляя как по размытию ввода, так и по форме.

В то же время я лично использую удивительную веб-страницу polyfill library, которая охватывает: пользовательскую ошибку, или вы можете взломать это с собой что-то в соответствии с ответом Тоби.

Ответ 5

input:required {
    /* Style your required field */
    /* Be sure to style it as an individual field rather than just add your desired styles
    for a required field. */
}

Пробовал и тестировал хром. Я не тестировал его ни в каком другом браузере.

Ответ 6

Это решение будет создавать поля ввода стиля, которые требуются через атрибут, в то время как пустой. Браузеры удалят: недопустимый псевдокласс при заполнении требуемого поля при смене ключа. Недавние версии Firefox автоматически применяют нечто похожее на этот стиль, но Chrome и IE этого не делают.

input[required]:invalid { box-shadow: 0 0 3px 1px red }

Попробуйте: http://jsfiddle.net/2Ph2X/