Отключить опцию, при выборе другой опции в множественном выборе

У меня есть мультиселект в HTML, как показано ниже. Я пытаюсь отключить все параметры, когда выбраны все типы, и отключить все типы, когда выбраны любые другие (один или несколько). Когда страница загружена, по умолчанию выбран параметр " Все типы ", пользователь может изменить его позже. HTML выглядит так:

<select multiple="multiple" class="multiselect">
    <option value="default" selected="selected">All Types</option>
    <option value="Mobile">Mobile</option>
    <option value="Laptop">Laptop</option>
    <option value="Desktop">Desktop</option>
</select>    

И Jquery как:

$(".multiselect").multiselect({
    buttonWidth: '150px',
    onChange:function(){
     /*some code needed here*/
    }
}); 

Когда выбрано "Все типы", результатом должно быть ["Мобильный", "Портативный компьютер", "Рабочий стол"] или ["по умолчанию"], и если выбран какой-либо другой параметр (один или несколько), то это значение в массиве. Я столкнулся с некоторой проблемой с отключением опций в пользовательском интерфейсе. Ждем решения для решения этой проблемы. Заранее спасибо:)

3 ответа

Для ответа от madalinivacsu.

если вы используете selected-pluggin, не забудьте добавить триггер:

$('[name=option_element]').on('change', function () {
        $(this).find('option').prop("disabled",false).trigger('chosen:updated');//enable all
        if ($(this).find('option:selected').is('option[value="option_default"]')) {
            $(this).find('option:not(":selected")').prop("disabled", true).trigger('chosen:updated');
        }
    });

Условие "если значение" по умолчанию "выбрано":

if($(this).val() == "default")

после этого вам просто нужно отключить или включить опции, которые вы можете сделать с помощью обычного jQuery.

$("option[value='Mobile']").prop("disabled", true);

Попробуйте использовать следующее событие изменения

$('select').on('change',function(){
$(this).find('option').prop("disabled", false);//enable all
if($(this).find('option:selected').is('option[value="default"]')) {}
  $(this).find('option:not(":selected")').prop("disabled", true);
})
Другие вопросы по тегам