Я пытаюсь сделать выпадающий список, когда при выборе одного элемента другой выпадающий список изменит его список
Так что пердеть это то, что я сделал,
Это первое раскрывающееся меню, которое изменит список другого раскрывающегося списка:
<select id="testers_team-${info.problemId}" class="tester_team">
<optgroup label="Current Value">
<option><c:out value="${info.team}"></c:out></option>
</optgroup>
<optgroup label="Teams">
<c:forEach var="team" items="${requestScope.testers}">
<option value="${team.key}">${team.key}</option>
</c:forEach>
</optgroup>
</select>
Это второе раскрывающееся меню, которое будет изменено, если выбрано другое раскрывающееся меню:
<select id="testers" class="testers_team-${info.problemId}">
<optgroup label="Current Assigned Tester">
<option>I'll think about this later</option>
</optgroup>
<optgroup label="Testers">
<c:forEach var="testers_per_team" items='${test.KwekKwek}'>
<option>${testers_per_team}</option>
</c:forEach>
</optgroup>
</select>
Этот код является Ajax
который получает правильное значение и отправляет его обратно, что должно быть repopulating выпадающего списка:
$('.tester_team').each(function(){
$(this).change(function() {
var id = $(this).attr('id');
$.post('Analysis',
{team: $(this).val()},
function(data)
{
$('.'+id).each(function()
{
$(this).find('option').remove();
$.each(data, function(index, value) {
$('<option>').text(value).appendTo($select);
});
});
},"json");
});
});
Уже сделано:
JSON
Проблема заключается в самообучении, используется
$.each(data, function(index, value) {
$('<option>').text(value).appendTo($select);
});
для повторного заполнения списка вскрытия SECOND, но, похоже, код неправильный. Пожалуйста, помогите мне решить эту проблему.
ПРИМЕЧАНИЕ. Оба выпадающего списка повторяются с помощью foreach
поэтому для определения второго раскрывающегося списка используется id
первого раскрывающегося списка. И о данных, которые отправляются обратно сервлетом, это не null, я попытался вывести его в alert();
и он есть.
Можете ли вы попробовать это?
$('.'+id).each(function()
{
$(this).find('option').remove();
var optgroup = $("optgroup[label=Testers]", this);
$.each(data, function(index, value) {
$('<option>').text(value).appendTo(optgroup);
});
})
$(this).find('option').remove();
удаляет все опции раскрывающегося списка, как я могу удалитьsecond optgroup
не разрушаяfirst optgroup