Проверка 2 и более input на disabled

282
23 ноября 2017, 05:05

Есть 2 инпута, в них вводятся значения, при верном значении input получает disabled.Нужна, проверка в реальном времени, если оба disabled, происходило действие.

input.disabled === true && input.disabled === true ? alert(1) : alert(2);

Происходит единожды при запуске скрипта, как я понял.

Какие есть еще варианты, кроме через setInterval

Answer 1

Логично проверять состояние тогда, когда оно может измениться. Когда в инпуте меняется значение, возникает событие oninput. В этом событии можно проверить текущее значение текущего инпута и если оно совпадает с "правильным", заблокировать его и проверить не заблокирован ли второй инпут.

Если у вас инпутов много, то можно присвоить им один класс, а потом при помощи метода document.querySelectorAll выбрать все нужные инпуты и проверить их состояние

function check(AInput, ACheckVal) { 
  if (AInput.value == ACheckVal) { 
    AInput.disabled = true; 
    checkOthers(); 
  } 
} 
 
function checkOthers() { 
  var inputs = document.querySelectorAll('.test'); 
  for (var i = 0; i < inputs.length; i++) { 
    if (!inputs[i].disabled) 
      return;  // Нашли незаблокированный. Выходим 
  } 
  // Если дошли сюда, то все заблокированы 
  console.log('All input disabled'); 
}
<input class="test" oninput="check(this, '1')"> 
<input class="test" oninput="check(this, '2')"> 
<input class="test" oninput="check(this, '3')"> 
<input class="test" oninput="check(this, '4')">

Answer 2

function check() { 
  if (input1.disabled == true && input2.disabled == true) { 
    alert(input1); 
    alert(input2); 
  } 
}
<input id="input1" value="" onkeyup="check()"> 
<input id="input2" value="" onkeyup="check()">

Попробуйте так

Answer 3

Разумеется, если эту строчку просто вставить в код, то выполнится она один раз.

input.disabled === true && input.disabled === true ? alert(1) : alert(2);

Вероятно, стоит производить проверку каждый раз после проверки одного из полей.

при верном значении input получает disabled

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

READ ALSO
Среднее значение параметра объекта

Среднее значение параметра объекта

Получаю Массив внутри объекты с данными

320
Пустой document.cookie в Chrome

Пустой document.cookie в Chrome

Есть код приложенный нижеВ Firefox как и в IE при первом обновлении страницы, как и при последующих будет выводится переданная мной строка

2092
Переключение таба при клике на ссылку

Переключение таба при клике на ссылку

Привет, есть группа ссылокНеобходимо сделать так, чтобы при клике на ссылку запускалась функция

228