Задать вопрос
Hoqus
@Hoqus

Как проверить заполнены ли инпуты с одинаковым классом с помощью js?

Привет, не могу найти простое решение задачки где есть 4 разных инпута: имя, фамилия, мейл, телефон, все с атрибутом required и одинаковым классом. Есть 2 модалки, одна должна вылазить при заполненых полях, а другая при не заполненных.
Пол дня уже пробую всяко разно, но нужный результат так и не получился =(
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
@samanwirst
Вроде бы человек
infoInputs = document.querySelectorAll(".input-class") // Получем все input через класс
for(var i=0; i < Object.keys(infoInputs).length; i++) { // Задаем цикл, чтобы проверить всех
    if(infoInputs[i].value.length != 0) { // если длина значения не равна нулю
        fulledInputs += 1 // прибавляем что этот инпут заполнен
    }
if (fulledInputs < 4) { // если заполненых инпутов меньше 4
    console.log(false) // выводим false
} else { // в других случаях
    console.log(true) // выводим true
}
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
все с атрибутом required

Если у них ещё и форма среди общих предков присутствует, то достаточно будет использовать checkValidity.

Ну а если непременно вручную надо проверять, то...

const className = 'здесь ваш класс';

Получаем input'ы:

const inputs = document.querySelectorAll(`.${className}`);

// или

const inputs = document.getElementsByClassName(className);

Проверяем заполненность:

const isFilled = [...inputs].every(n => n.value);

// или

const isFilled = !Array.prototype.some.call(inputs, n => !n.value);

// или

let isFilled = true;
for (const n of inputs) {
  if (!n.value) {
    isFilled = false;
    break;
  }
}

// или

let isFilled = true;
for (let i = -1; ++i < inputs.length && (isFilled = !!inputs[i].value);) ;

// или

const isFilled = !(function isEmpty(i) {
  return i < inputs.length && (!inputs[i].value || isEmpty(-~i));
})(0);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы