Поменять фон при вводе в текст поле input

    var inputs = document.querySelectorAll('input[type=text]'),
        sidebar = document.querySelector('.sidebar');
    Array.prototype.forEach.call(inputs, function (el) {
        el.addEventListener('focus', function () {
            sidebar.style.backgroundColor = '#59a4ea';
        })
        el.addEventListener('blur', function () {
            sidebar.style.backgroundColor = '#eee';
        })
    })
.inner-content{
    width: 200px;
    padding: 15px;
    margin-top: 20px;
    border: #2c5694 2px solid;
}
.inner-content > input{
    border-color: #2c5694;
}
 .inner-content > textarea{
     border-color: #2c5694;
 }
#block{
     width: 200px;
    height: 200px;
    border: 1px solid black;
    background: #84a1e0;
}
.sidebar {
    background-color: #eee;
}
<form>
        <div class="inner-content sidebar"><input type="text"></div>
        <div class="inner-content sidebar"><input type="email"></div>
</form>

Надо поменять фон при фокусе в какое либо поле input,кол-во input может меняться. Как сделать что бы примеялся и для emails, texarea я знаю, этот скрипт можна копировать и изменить input[type=], а можна как то по другому


Ответы (1 шт):

Автор решения: Voprositel

При вводе в инпут происходит проверка: если он не пустой ему добавляется класс noempty. Если пустой - удаляется.

const input = document.querySelector('input');

input.addEventListener('input', function() {
  if (this.value.trim().length === 0) {
    this.classList.remove('noempty');
  } else {
    this.classList.add('noempty');
  }
});
.noempty {
  background-color: green;
}
<input type="text">

→ Ссылка