Здравствуйте, есть функция проверяющая заполнены ли обязательные поля формы или нет. Так вот она по умолчанию проверяет только поля типа
input
$(this).find('input[type="text"]').each(function () {
if ($(this).val() == '' && $(this).attr('aria-required')) {
$(this).addClass('badfields');
flag = false;
} else {
$(this).removeClass('badfields');
}
}
Хотел бы ещё добавить проверку обязательную полей типа
select
Я чуть изменил параметры функции find и сделал так:
$(this).find('input[type="text"], select').each(function () {
if ($(this).val() == '' && $(this).attr('aria-required')) {
$(this).addClass('badfields');
flag = false;
} else {
$(this).removeClass('badfields');
}
}
То есть добавил в параметры функции
select
Вопросы первый:
правильно ли я добавил параметр select ?
Вопрос второй: при проверке заполнено ли поле или нет участвует функция
val() . С полями Input то всё понятно. Здесь если пустая строка, то поле не заполнено. А вот как быть с select? У меня просто по умолчанию в поле Select стоит значение "Выберите цвет" и далее при нажатии на селект список вариантов (например красный, зелёный, синий и т.п.). Есть и второй селект, в котором стоит по умолчанию значение "Выберите материал" и значения (дерево, металл и т.д.) Мне вот со своими скудными знаниями функций и операторов Javascript приходит в голову делать только такую проверку:
$(this).find('input[type="text"], select').each(function () {
if ($(this).val() == '' || $(this).val() == 'Выберите цвет' || $(this).val() == 'Выберите материал' && $(this).attr('aria-required')) {
$(this).addClass('badfields');
flag = false;
} else {
$(this).removeClass('badfields');
}
}
Но это тоже не срабатывает, так как почему то все полям в форме добавляется класс badfield. Я так подозревая, что в логических операторах и их приоритете у меня что то неправильно (я имею ввиду ||, &&). Подскажите пожалуйста как бы сделать правильно?