@BuBux

Как убрать накопление данных во втором select`e при выборе значения из первого?

$(document).on('change','#direct',function(){
	let id = document.getElementById("direct").value;

    $.getJSON("ajax", {id}, function (data) {
    	
        $.each(data, function (index, item) {
      		$("#modules").append('<option value ="'+item.ID+'">'+item.NAME+'</option>');
    	});
    });
});

Есть два selecta. При смене значений в первом, во втором значения просто накапливаются и образуется длинный список.
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
neuotq
@neuotq
Прокрастинация
Добавьте строчку

$(document).on('change','#direct',function(){
  let id = document.getElementById("direct").value;

    $.getJSON("ajax", {id}, function (data) {
    	$("#modules").html('');
        $.each(data, function (index, item) {
      		$("#modules").append('<option value ="'+item.ID+'">'+item.NAME+'</option>');
    	});
    });
});

Ну и чтобы уменьшить обращения к DOM дереву, элемент #modules можно тоже скешировать.

$(document).on('change','#direct',function(){
  let id = document.getElementById("direct").value; // Возможно тут вам тоже не нужен let? мб const
 const modulesEl = $("#modules");

    $.getJSON("ajax", {id}, function (data) {
    	modulesEl.html('');
        $.each(data, function (index, item) {
      		modulesEl.append('<option value ="'+item.ID+'">'+item.NAME+'</option>');
    	});
    });
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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