Не разрешать повторяющиеся выпадающие списки - PullRequest
0 голосов
/ 02 августа 2011

Я предполагаю, что это JS или jQuery, но я совсем не разбираюсь в них (только начинаю их изучать после многих лет PHP).

У меня есть 3 выпадающих списка в форме, которые несколько идентичны. У всех есть список одинаковых ссылок, которые извлекаются из базы данных MySQL и заполняются через PHP. Скажем, города:

  • Город 1
  • Город 2
  • ...
  • Город 8

Значения по умолчанию для 3 раскрывающихся списков будут:

  • Раскрывающийся список 1 - Город 1
  • Раскрывающийся список 2 - N / A
  • Раскрывающийся список 3 - N / A

По сути, мне просто нужно, чтобы выпадающие списки работали, когда город, выбранный в любом из 3, автоматически удаляет его из двух других выпадающих списков. В конце не может быть повторяющихся записей в 3 выпадающих списках. Также мне нужно, чтобы это происходило динамически (событие onChange?), Чтобы, если они выбирают Город 4 в первом списке, оно сразу же удаляется как опция из двух других выпадающих списков.

Надеюсь, это имеет смысл? Любая помощь приветствуется!

Ответы [ 3 ]

1 голос
/ 02 августа 2011
$("#selectBox option[value='option']").remove(); --remove

$("#selectBox").append('<option value="option">option</option>'); --add

Вы можете использовать .change (), чтобы удалить опцию

$("select").change(function(){
  //remove option
})

, что происходит после удаления города из select1 и select2, и пользователь меняет значение select3 на другой город, вы добавляете город обратно в список?

1 голос
/ 02 августа 2011

Попробуйте это

   var selectedVal, $this, valuesToCheck;
$("select").change(function(){
   selectedVal = $(this).val();
   valuesToCheck = [selectedVal];
  $("select").each(function(){
     valuesToCheck.push($(this).val());
     $(this).find("option:disabled").removeAttr("disabled");
  }).each(function(){
        $this = $(this);
        $.each(valuesToCheck, function(){
            $this.find("option[value='"+this+"']").attr("disabled", "disabled"); 
        }); 
    }); 
});
0 голосов
/ 02 августа 2011

А если он вернет обратно значение выпадающего меню 1? Я думаю, вам придется вернуть удаленное значение? Это создаст много вызовов ajax для обновления содержимого другого выпадающего списка. Я предлагаю вам проверить ваше состояние по событию onChange и вывести сообщение, если вы обнаружите дубликаты.

Если вы удалите запись, как и другой ответ sugest .... если вы выберете все города 1 на 1 в первом раскрывающемся списке, у вас больше не будет записи в 2 других; -)

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