Запретить пользователю выбирать один и тот же выбор в 3 раскрывающихся списках - PullRequest
0 голосов
/ 06 января 2020

У меня есть 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;

            }
        });






    });

Я отредактировал код, чтобы показать, над чем я работал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...