Необходимо сделать кнопку "создать" не активной в том случае, если выбрано одно из двух значений “Выбрать месяц”/“Выбрать год” или выбрано сразу два значения. У меня проблема в том, что кнопка не становится снова нормальной после добавления других значений.
let header = document.createElement('div');
let select1 = document.createElement('select');
let select2 = document.createElement('select');
let label1 = document.createElement('label');
let label2 = document.createElement('label');
let body = document.getElementById('kappa');
let elem = document.getElementById('calendaric');
let butCreate = document.createElement('button');
let butDelete = document.createElement('button');
let monthArray = ['Выбрать месяц',"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
let yearArray = ['Выбрать год','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992',
'1993','1994','1995','1996','1997','1998','1999','2000','2001','2002','2003','2004','2005','2006','2007','2008','2009',
'2010','2011','2012','2013','2014','2015','2016','2017','2018','2019'];
label1.textContent = 'Месяц: ';
label2.textContent = ' Год: ';
butCreate.textContent = 'Создать';
butDelete.textContent = 'Удалить';
butCreate.style.marginLeft = '7px';
butDelete.style.marginLeft = '7px';
//цикл для заполнения тега select массивом
for(let i = 0;i<monthArray.length;i++){
let monthArray_ = monthArray[i];
let optionFill = document.createElement('option');
optionFill.className = 'month';
optionFill.textContent = monthArray_;
optionFill.value = monthArray_;
select1.appendChild(optionFill);
}
//цикл для заполнения тега select массивом
for(let i = 0;i<yearArray.length;i++){
let yearArray_ = yearArray[i];
let optionFill = document.createElement('option');
optionFill.className = 'year';
optionFill.textContent = yearArray_;
optionFill.value = yearArray_;
select2.appendChild(optionFill);
}
// butDelete.addEventListener('click', function(){
//
// });
//неактивность кнопки!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if((select1.value = select1.children[0].value)||(select2.value = select2.children[0].value)){
butCreate.setAttribute('disabled','disabled');
}
butCreate.addEventListener('click', function () {
butCreate.removeAttribute('disabled');
console.log('4');
});
body.insertBefore(header,elem);
header.appendChild(label1);
header.appendChild(select1);
header.appendChild(label2);
header.appendChild(select2);
header.appendChild(butCreate);
header.appendChild(butDelete);
<body id = 'kappa'>
<div id = 'calendaric'></div>
У вас нет обработчиков события изменения селектов, поэтому нельзя сделать кнопку снова активной
const enableButtonIfNeeded = () => {
if (select1.value !== select1.children[0].value &&
select2.value !== select2.children[0].value) {
butCreate.removeAttribute('disabled')
} else {
butCreate.setAttribute('disabled','disabled');
}
}
select1.onchange = enableButtonIfNeeded;
select2.onchange = enableButtonIfNeeded;
Полный пример
let header = document.createElement('div');
let select1 = document.createElement('select');
let select2 = document.createElement('select');
let label1 = document.createElement('label');
let label2 = document.createElement('label');
let body = document.getElementById('kappa');
let elem = document.getElementById('calendaric');
let butCreate = document.createElement('button');
let butDelete = document.createElement('button');
let monthArray = ['Выбрать месяц',"Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"];
let yearArray = ['Выбрать год','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992',
'1993','1994','1995','1996','1997','1998','1999','2000','2001','2002','2003','2004','2005','2006','2007','2008','2009',
'2010','2011','2012','2013','2014','2015','2016','2017','2018','2019'];
label1.textContent = 'Месяц: ';
label2.textContent = ' Год: ';
butCreate.textContent = 'Создать';
butDelete.textContent = 'Удалить';
butCreate.style.marginLeft = '7px';
butDelete.style.marginLeft = '7px';
//цикл для заполнения тега select массивом
for(let i = 0;i<monthArray.length;i++){
let monthArray_ = monthArray[i];
let optionFill = document.createElement('option');
optionFill.className = 'month';
optionFill.textContent = monthArray_;
optionFill.value = monthArray_;
select1.appendChild(optionFill);
}
//цикл для заполнения тега select массивом
for(let i = 0;i<yearArray.length;i++){
let yearArray_ = yearArray[i];
let optionFill = document.createElement('option');
optionFill.className = 'year';
optionFill.textContent = yearArray_;
optionFill.value = yearArray_;
select2.appendChild(optionFill);
}
// butDelete.addEventListener('click', function(){
//
// });
//неактивность кнопки!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if((select1.value = select1.children[0].value)||(select2.value = select2.children[0].value)){
butCreate.setAttribute('disabled','disabled');
}
butCreate.addEventListener('click', function () {
console.log('It works!');
});
body.insertBefore(header,elem);
header.appendChild(label1);
header.appendChild(select1);
header.appendChild(label2);
header.appendChild(select2);
header.appendChild(butCreate);
header.appendChild(butDelete);
const enableButtonIfNeeded = () => {
if (select1.value !== select1.children[0].value &&
select2.value !== select2.children[0].value) {
butCreate.removeAttribute('disabled');
} else {
butCreate.setAttribute('disabled','disabled');
}
}
select1.onchange = enableButtonIfNeeded;
select2.onchange = enableButtonIfNeeded;
<body id = 'kappa'>
<div id = 'calendaric'></div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Для сотрудников был сделан скрипт, для формирования email письмаЗаполняем поля, а ниже формируется письмо в формате html (подставляются данные...
С прошлым примером все получилось, поэкспериментировал - вроде бы все работаетРешил применить в задаче
Нашел интересную задачку, но решение до конца не смог довестиНаписать функцию, которая на вход получает строку, которая содержит числа (пример:...