У меня есть 3 выпадающих списка с тем же набором опций, что и ниже
<select id="one">
<option value="1">Select</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select id="two">
<option value="1">Select</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select id="three">
<option value="">Select</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
Если пользователь выбирает вариант "один" в третьем раскрывающемся списке, "Один" не должен отображаться в выпадающем списке 1-го и 2-го. В любой момент времени, когда пользователь нажимает на любое раскрывающееся меню, должно отображаться только текущее значение вместе со значениями, которые не выбраны в другом раскрывающемся списке.
Есть ли способ достичь этого с помощью jQuery
Пожалуйста помоги.
Ваш HTML недопустим. Вам нужно закрыть <option>
используя </option>
Вам также нужно -1
значение, отличное от 1
например -1
или оставить его пустым для первого параметра в каждом из выбранных вами
Тогда вы можете сделать это, чтобы достичь своих требований:
$('select').change(function () {
var selectedVal = $(this).val();
$(this).siblings('select').find('option[value="' + selectedVal + '"]').hide();
$(this).siblings('select').find(':not(option[value="' + selectedVal + '"])').show();
$(this).siblings('select').find('option:eq(0)').prop('selected', true);
});
Это можно обработать с помощью прослушивателя событий для выпадающих списков выбора. В функции прослушивателя событий вы получите выбранное значение из элемента, который вызвал событие.
Когда у вас есть выбранное значение, вы можете прокручивать другие выпадающие меню и удалять выбранное значение.
Вот короткий фрагмент кода
$('.dropdown').change(function (event) {
$('.dropdown').each(function (index, element) {
if (event.target.id == element.id) {
return true;
}
var selectedValue = event.target.value;
$(element).children('[value=' + selectedValue + ']').remove();
});
});
Вот полная рабочая демонстрация: