squadbrodyaga
@squadbrodyaga
帆は風を変えた

Как сделать заблокированный button если Input пустой?

Нужен скрипт, из-за которого кнопка будет disabled, если все три поля input будут пустые и наоборот, если все поля заполнены, то кнопка станет enabled. У меня получилось, но но я случайно удалил весь свой код.

Раньше мой код для одного поля выглядел примерно так, но этот код не работает:

let mail = document.querySelector("#email");
let button = document.querySelector("#button");

mail.addEventListener("#email", ButtonED);

function ButtonED(){
	if (mail.value == ""){
		button.disabled = true;
	} else {
		button.disabled = false;
	}
}
ButtonED()
  • Вопрос задан
  • 2865 просмотров
Решения вопроса 2
wapster92
@wapster92 Куратор тега JavaScript
"#email"
что это за событие такое?
let mail = document.querySelector("#email");
let button = document.querySelector("#button");

mail.addEventListener("input", ButtonED);

function ButtonED(){
  if (mail.value == ""){
    button.disabled = true;
  } else {
    button.disabled = false;
  }
}
ButtonED()
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
кнопка будет disabled, если все три поля input будут пустые и наоборот, если все поля заполнены, то кнопка станет enabled

А если поля заполнены, но не все - одно или два? Это получается какое-то третье состояние, которого у кнопки быть не может. Вам следует больше внимания уделять формулировкам стоящих перед вами задач. "Наоборот" для "все пустые" - это "хотя бы одно заполнено":

const button = document.querySelector('селектор кнопки');
const inputs = [...document.querySelectorAll('селектор инпутов')];
const onInput = () => button.disabled = inputs.every(n => !n.value);
inputs.forEach(n => n.addEventListener('input', onInput));
onInput();

И, аналогично, для "все заполнены" - "хотя бы одно пустое", вместо every будет some.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 22:03
3000 руб./за проект
23 нояб. 2024, в 21:53
30000 руб./за проект
23 нояб. 2024, в 21:49
1000 руб./в час