У меня есть поля с class="required"
который имеет пользовательский css.
Когда я отправляю форму, я вижу собственное сообщение об ошибке, которое использует обязательные поля css:
$(".required").addClass('required-fields');
Теперь, когда я заполняю некоторые поля (не все обязательные), и я возвращаю снова форму, возможно, мне нужно увидеть: в полях, у которых есть данные (а не пустые), должен идти другой css. Как пограничный зеленый или что-то в этом роде.
Можно ли сделать с for
возможно?
Вы можете попробовать что-то вроде этого:
$('.required').removeClass('ok').filter(function(){
return !!$(this).val();
}).addClass('ok');
Он фильтрует все обязательные поля со значением и добавляет класс "ok";
Попробуй это:
$('input.required:text').filter(function() {
return $(this).val() == "";
}).css(...);
Вы должны передавать каждый вход с помощью Jquery-селектора, например
var $fields = $('.field');
И проверьте, требуется ли это поле или нет, и если задано значение или нет:
$fields.each(function ($field) {
if ($field.hasClass('required') && !$field.value) {
$field.addClass('required-fields');
}
else {
$field.addClass('green-fields');
}
});
Это быстрый проект :)
Проверка формы с обратной связью с пользователем является достаточно распространенным требованием, которое вы можете пожелать использовать плагин, а не кодирование пользовательского решения (изобретать колесо) каждый раз:
Вы можете попробовать что-то вроде следующего (не может быть более конкретным, потому что вы не предоставили HTML
):
$('.required').not('[value=""]').css(...);
С помощью css() вы можете изменить внешний вид своих элементов.
Обновить:
Чтобы добавить к ним класс, попробуйте следующее:
$('.required').not('[value=""]').addClass('className');
Чтобы удалить класс, а затем добавить другой класс (также вы можете использовать toggleClass), попробуйте следующее:
$('.required').not('[value=""]').removeClass('className').addClass('className');
:empty
не работает на входах, так как значение не является дочерним элементом ввода. Также ваш последний пример просто удаляет, а затем добавляет тот же класс к тем же элементам.
Вы можете проверить, имеет ли значение входное значение. Например, if($("#nameInput).value)
будет истинным, если оно не пустое. Вы можете добавить класс к этим входам.
for(var i=0;i<inputs.length;i++){
if(inputs[i].value){
//enter add class code here
}
}
$(".required")
? Я имею в виду все входы с этим классом.
var inputs = $(".required");
даст вам массив входов с этим классом. Затем вы можете использовать цикл for для прохождения каждого ввода.
Is it possible to do with a for maybe?
, Да.