2012-02-26 2 views
0

У меня есть проблема с выбором элементов ввода.Удалить выбранные элементы из других входов выбора

То, что я хочу достичь, - это динамическое удаление уже выбранных параметров из других полей выбора, чтобы я не мог выбрать один и тот же элемент в нескольких блоках. Проблема в том, что элементы загружаются в массив через AJAX, и мне нужно заполнить выбранный ввод опциями после. Это делает его намного сложнее.

Короче - Как я могу убедиться, что если я выбрать один элемент в выберите, он будет удален на всех остальных, но когда я выбираю что-то еще предыдущий элемент будет показан еще раз и так далее ...

у меня есть скрипку, а это, как далеко я получил: http://jsfiddle.net/P3j4L/

+0

Я не уверен, что это возможно в вашем примере. Как вы собираетесь «выбрать что-то еще», когда вы уже удалили/отключили другие параметры? Это пример того, что я говорю о http://jsfiddle.net/BagKm/ :) – tftd

+0

То, чего я боялся, для меня это кажется совершенно невозможным, поэтому я пошел спросить вас, ребята. – sed

+0

Обходной путь к этой проблеме может заключаться в том, чтобы исключить первый флажок выбора из операции удаления/отключения. Таким образом вы сможете выбрать все параметры где-нибудь. Когда вы выбираете опцию из первого окна выбора, повторно вставьте/снова включите все параметры в других блоках выбора, кроме выбранного, из первого окна выбора. Если я получу некоторое время позже, я могу опубликовать jsfiddle. – tftd

ответ

3

Вы можете попробовать что-то вроде этого

function updateSelects() 
{ 
    $('.selectContainer .select').each(
    function (i, elem) 
    { 
     // Get the currently selected value of this select 
     var $selected = $(elem).find("option:selected"); 
     // Temp element for keeping options 
     var $opts = $("<div>"); 
     // Loop the elements array 
     for (i = 0; i < selectElements.length; i++) 
     { 
      var value = selectElements[i]; 
      // Check if the value has been selected in any select element 
      if ($selected.val() == value || !$('.select option[value=' + value + ']:selected').length) 
      { 
       // if not create an option and append to temp element 
       $opts.append('<option value="' + value + '">' + value + '</option>'); 
      } 
     } 
     // replace the html of select with new options 
     $(elem).html($opts.html()); 
     if ($selected.length) 
     { 
      // set the selected value if there is one 
      $(elem).val($selected.val()); 
     } 
     else 
     { 
      // new select element. So remove its selected option from all other selects 
      $('.selectContainer .select').not(this).find('option[value=' + $(elem).val() + ']').remove(); 
     } 
    } 
); 
} 

посмотреть демо здесь: http://jsfiddle.net/P3j4L/1/

+0

Возможно ли это в чистом javascript? Мне запрещено использовать jQuery. – fungusanthrax

Смежные вопросы