2016-03-14 3 views
0

У меня есть multi select, и я хочу узнать, на какую кнопку пользователь нажал. Я искал в Интернете, но не могу получить достойный ответ. Я не хочу, массив всех выбранных, только тот, что пользователь нажал наMulti Select DropDown- Получить текущую выбранную опцию

Например

Вариант A Вариант B Вариант C

если щелчки член по варианту А я хочу, чтобы получить вариант A, если член затем выбирает вариант B, я хочу получить вариант B, а не вариант A и B.

Я видел ответы, где они говорят, чтобы использовать событие click, но дальнейшие исследования показывают, что с несколькими параметрами щелчок событие не срабатывает, я должен использовать его при изменении.

Причина, почему я это нужно, потому что мы имеем следующее требование

Вариант A Вариант B Вариант C Опция None

, если член выбирает А, то В, то ни один, я не нужен все параметры, которые нужно снять, и «None» только что выбраны.

Если выбрано значение «Нет», и участник решает выбрать вариант «А», то «Нет» необходимо снять выделение и выбрать параметр «А».

Единственный способ, которым я могу это понять, - это узнать, на какой элемент участник нажал кнопку «Нет», затем отменить выбор всех, затем выберите «Нет», иначе убедитесь, что ни один из них не выбран, если выбран.

+0

Можете ли вы привести пример кода, что вы пробовали? –

+0

Это то, что код будет выглядеть, если я смог получить текущую выбранную опцию.Если «Нет», отмените выбор всех и выберите «Нет», else {снимите флажок «Нет») – Philosopher

+0

Я проверил онлайн ближайший, я пришел, является приведенным ниже фрагментом кода – Philosopher

ответ

0

Получить текущий выбранный вариант (динамическая):

$('#myselect').change(function() { 
    alert($(this).val()); 
}) 

Получить текущий параметр, выбранный (не динамический):

$('#myselect option:selected').val(); 
+0

Спасибо, Грег, но я уже пробовал это, он дает все опции, выбранные в списке, я просто хочу, чтобы я нажал. – Philosopher

+0

вариант A, вариант B уже выбран, затем я нажимаю Option C, ваш ответ дает мне вариант A, вариант B и вариант C, мне нужен только вариант C – Philosopher

0

Это заняло у меня немного погуглить, чтобы понять это, как Я никогда не сталкивался с несколькими выборами раньше, но вот код, который я придумал, работает так, как вы хотите. Вероятно, у него есть возможности для улучшения, но у меня нет времени на это.

var arr = [], 
 
    index; 
 

 
$("#mymulti").on('click', 'option', function() { 
 
    if ($(this).is(':selected')) { 
 
    arr.push($(this).val()); 
 
    } else { 
 
    index = arr.indexOf($(this).val()); 
 

 
    if (index > -1) { 
 
     arr.splice(index, 1); 
 
    } 
 
    } 
 
    if (arr.length == 0) { 
 
    $('#mymulti').val(['None']); 
 
    arr.push('None'); 
 
    } else if (arr[0] === 'None' && arr.length > 1) { 
 
    index = arr.indexOf('None'); 
 
    arr.splice(index, 1); 
 

 
    $('#mymulti option[value="None"]').attr('selected', false); 
 
    } else { 
 
    $.each(arr, function(index, value) { 
 
     if (value === 'None' && index > 0) { 
 
     $("#mymulti option").attr('selected', false); 
 
     $('#mymulti option[value="None"]').attr('selected', true); 
 
     arr = ['None']; 
 
     } 
 
    }); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="mymulti" multiple="multiple"> 
 
    <option value="1">Option A</option> 
 
    <option value="2">Option B</option> 
 
    <option value="3">Option C</option> 
 
    <option value="None">None</option> 
 
</select>

+0

Спасибо за ответ Diddle, но событие click не срабатывает , я думаю, что для нескольких вариантов вам нужно использовать изменения, которые я просмотрел в Интернете, и я получаю одинаковый ответ. «click for multi options» не работает во многих браузерах. – Philosopher

+0

. В каком браузере он не запускается? Я проверил хром, сафари , и firefox, и он работал во всех них. –

+0

это было странно для меня, по какой-то причине событие click было подавлено, я должен был упомянуть, что я использовал Silvio Morettos bootstrap multi select. Я пошел на его сайт и нашел соответствующее событие, чтобы использовать, чтобы получить то, что я хотел, я публикую ответ ниже. – Philosopher

0

Мульти выбора я использовал был силвио Moretto-х самозагрузки-выберите

по какой-то причине он был подавляя в на -Click события от стрельбы.

Я пошел на его сайт и обнаружил следующее событие

$ ('# myMulti'). На ('changed.bs.select', функции (ЭВТ, clickedIndex) { второй параметр дал мне текущий выбранный индекс, который является то, что мне нужно

https://silviomoreto.github.io/bootstrap-select/options/#events

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