У меня есть 3 выбора, которые я бы хотел запретить пользователю выбирать ту же опцию. Если пользователь выберет первый вариант, т. Е. «Выбрать», то в других выпадающих списках должны быть показаны все значения. Ограничение срабатывает, но когда я выбираю первый вариант, т. Е. Выбор, он не заполняет все остальные варианты выбора всеми значениями * 1001. *
https://next.plnkr.co/edit/lM7yB3gLhMCWyI5z
<select id="sel1" class='agency'>
<option value="Select">Select</option>
<option value="EIS">EIS</option>
<option value="Exp">Exp</option>
<option value="TUL">TUL</option>
</select>
<select id="sel2" class='agency'>
<option value="Select">Select</option>
<option value="EIS">EIS</option>
<option value="Exp">Exp</option>
<option value="TUL">TUL</option>
</select>
<select id="sel3" class='agency'>
<option value="Select">Select</option>
<option value="EIS">EIS</option>
<option value="Exp">Exp</option>
<option value="TUL">TUL</option>
</select>
$(function () {
var elements = [];
$('.agency').each(function (i, obj) {
elements.push($(this).attr('id'));
});
var arr = ['EIS', 'EXP', 'TUL'];
$('.agency').change(function () {
debugger;
var id = $(this).attr('id');
var selected = $("#" + id + " option:selected").text();;
var filteredElements = $(elements).filter(function (idx) {
return elements[idx] !== id;
});
var y = $.grep(arr, function (value) {
return value.trim() != selected.trim();
});
for (var i = 0; i < filteredElements.length; i++) {
var $selectobject = $("#" + filteredElements[i]);
var currentID = $selectobject.attr('id');
var selctedText = $("#" + currentID + " option:selected").text();;
var currentArr=[];
$("#" + currentID + " option").each ( function() {
currentArr.push ( $(this).text() );
});
$("#" + currentID).html('');
$("#" + currentID).prepend('<option value=' + 0 + '> Select </option>');
$.each(y, function (index, value) {
$("#" + currentID).append('<option value=' + value + '>' + value + ' </option>');
});
$("#" + currentID).prepend("<option value='0' 'selected'></option>");
var x = y.filter(function (elem) {
return elem.trim() !== selctedText.trim();
});
y = x;
debugger;
}
});
});
Я отредактировал код, чтобы показать, над чем я работал