2016-06-23 2 views
0

У меня есть два JQuery ВЫБ.2 экземпляров, которые имеют те же параметры и тот же класс я хочу, что каждый раз, когда я выбираю опцию в одном ВЫБ.2 случае он становится не доступен в обеих случаяхобновления JQuery Select2 доступные варианты для нескольких экземпляров

<select class="select2-element" multiple="multiple"> //instance 1 
    <option value="AL">Alabama</option> 
    ... 
    <option value="WY">Wyoming</option> 
</select> 

<select class="select2-element" multiple="multiple"> //instance 2 
    <option value="AL">Alabama</option> 
    ... 
    <option value="WY">Wyoming</option> 
</select> 

EDIT Для простоты я уже говорил, что у меня есть два отдельных элементов, но на самом деле у меня есть х элементов динамически генерироваться

ответ

0

Ну, во избежание того, что все экземпляры получают одинаковые выбранные элементы, такие как @blubberbo, я дал каждому элементу идентификатор, и я изменил способ получения выбранных параметров. Я использовал сгенерированные классы select2.js в качестве селекторов, чтобы получить выбранные параметры из элемента select2.

$('#Save').click(function() { 
     $('.select2-element').each(function() { 
      var instance = $(this).attr('id'); 
      $('#s2id_' + instance + ' li.select2-search-choice div').each(function() { 
       alert($(this).attr('id')); 
      }); 
     }); 
    }); 

DIV элемент под li.select2-поиска выбора не иметь атрибут, поэтому я добавил, что к select2.js, как это:

choice.find("div").replaceWith("<div id="+id+" >"+formatted+"</div>"); 
0

насчет давая второй <select> тега идентификатор, такие как <select id="changeSelect"...

и добавление добавления слушателя в JQuery, как:

$('select2-element').on('change', function() { 
    var selectValue = $(this).val(); 
    $('#changeSelect').val(selectValue); 
}); 

Я мог бы также предлагает избавиться от select2-element класса на первый <select> тега, чтобы предотвратить вторую от динамического выбора на себя

+0

Спасибо, я только изменил $ ('# changeSelect') $ ('. select2-element'), и я получил поведение, которое я искал. – MAK5

+0

Это здорово, но я должен предупредить вас об этом. Если вы устанавливаете значение с помощью '$ ('. Select2-element'). Val (selectValue);', вы нацеливаете ВСЕ элементы с помощью класса 'select2-element', а не только второго. В этом случае он может не мешать тому, что вы хотите, то есть он может выглядеть так, как будто он ведет себя правильно, но имейте в виду, что он на самом деле нацеливает ВСЕ из них, а не только тот, который вы хотите. Я бы использовал разные классы, идентификаторы или более сложный JS-код, чтобы ориентироваться только на тот, который вы хотите. Если вы создадите больше, вы можете столкнуться с трудностью – blubberbo

+0

, так как все элементы выбора получили одинаковые выбранные элементы, поэтому я попробовал другое обходное решение, чтобы получить их правильно, я опубликовал новый ответ. – MAK5

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