@BuBux

При выборе определенного option, остальным проставить свойство disabled?

<select id="status" class="form-control select2" name="status" multiple onchange='myStatus()'>
   <option value='-222'>Просрочено</option>
   <option value='1'>В работе</option>
   <option value='2'>Выполнено</option>
</select>

function myStatus() {
	var op = document.getElementById("status");

	for (var i = 0; i < op.length; i++) {
		(op[i].value.toLowerCase() != "-222") ? op[i].disabled = true : op[i].disabled = false;
	}

}

Необходимо, чтобы при выборе статуса "Просрочено", остальные стали не доступны. И наоборот, если выбран любой статус кроме "Просрочено", то "Просрочено" становится не доступным к выбору.

P.S. Должна быть возможность "отмены". Человек может указать статус ошибочно.
  • Вопрос задан
  • 352 просмотра
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
Зачем вам disabled, не нужно так делать, просто снимайте выделение типа
document.querySelector("#status").addEventListener("change",function (evt) {
  	Array.from(evt.target.children).forEach((e)=>{
    	if(evt.srcElement.value == "-222" && e.value != "-222" || evt.srcElement.value != "-222" && e.value == "-222")
    		e.selected = false;        
    });
});

Или так
document.querySelector("#status").addEventListener("change", evt=> {
  	[...evt.target.children].forEach(e=> e.selected =e.selected && !(evt.srcElement.value == "-222" && e.value != "-222" || evt.srcElement.value != "-222" && e.value == "-222") );
});
Ответ написан
Ваш ответ на вопрос

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

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