Проблема Bootstrap-Multiselect со сбросом формы и повторным заполнением флажков

Я использую bootstrap-multiselect для раскрывающегося списка в своем приложении. Все работает нормально, за исключением сброса моей формы, когда я хочу, чтобы он вернулся к исходным выбранным значениям. Он отображает выбранные значения, как и ожидалось, в меню, когда оно закрыто (т.е. создает список с несколькими вариантами выбора), но когда я открываю меню, флажки для выбранных элементов не проверяются.

Я пробовал следующее безрезультатно:

$("#MyMenu").multiselect('refresh');
$("#MyMenu").multiselect('rebuild');
$("#MyMenu").multiselect('destroy');

с последующим

$("#MyMenu").multiselect();

Любая помощь приветствуется!


person jenni-mm2    schedule 23.09.2014    source источник
comment
Это именно тот синтаксис, который вы использовали? Пожалуйста, не оставляйте нас, чтобы предположить, что еще было в вашем коде. Я предполагаю, что вы действительно пробовали $("#MyMenu").multiselect('refresh');, например.   -  person isherwood    schedule 23.09.2014
comment
Извините, я обновил код, чтобы он был более точным.   -  person jenni-mm2    schedule 23.09.2014
comment
Хммм... Это должно было сделать это. Может быть, создать демо. jsfiddle.net   -  person isherwood    schedule 24.09.2014
comment
Вот он: JSFiddle   -  person jenni-mm2    schedule 24.09.2014


Ответы (8)


Для меня это работает просто с:

$('#id').multiselect('refresh');

Однако следует отметить, что событие сброса срабатывает до фактического сброса входных данных формы. На практике это означает, что следующее не будет работать:

$('#formID').on('reset', function(){
    $('#id').multiselect('refresh');
});

при переносе вызова в мгновенный setTimeout будет работать!

$('#formID').on('reset', function(){
    setTimeout(function(){
        $('#id').multiselect('refresh');
    });
});
person Dre    schedule 13.11.2014
comment
Я не знал, что о сбросе формы - спасибо! - person jenni-mm2; 14.11.2014

сегодня я столкнулся с той же проблемой ... я сделал

$("option:selected").removeAttr("selected");
$("#MyMenu").multiselect('refresh');

Это сработало для меня...

person Bhupendra Pandey    schedule 22.12.2014

После долгих проб и ошибок я, наконец, решил это так.

$('#MyMenu').multiselect('destroy');
$('#MyMenu').multiselect();

$('#MyMenu option:selected').each(function () {
    $(":checkbox[value=" + $(this).val() + "]").attr('checked', true)
})
person jenni-mm2    schedule 30.09.2014
comment
Основываясь на вашем ответе, я сделал это, и, похоже, это работает: $('option:selected', theMultiselect$).each(function() { theMultiselect$.multiselect('deselect', $(this).val()); }); - person Mikael; 02.10.2014
comment
Я пробовал это в JSFiddle выше, и, похоже, это не работает. - person jenni-mm2; 03.10.2014

str это массив из базы данных

$('#dropdown').multiselect({includeSelectAllOption: true,});
$("#dropdown").multiselect('deselectAll', false);

сначала инициализируйте и сбросьте doropdown.

for(i=0; i<= str.length; i++){           
      $("#dropdown").find("option[value='"+ $.trim(str[i])+"']").prop("selected", true);
      $("#dropdown").find("option[value='"+ $.trim(str[i])+"']").attr("selected", "selected");          
}

$("#dropdown").multiselect("refresh");

этот код будет предварительно выбирать значения.

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

$('#dropdown').multiselect({includeSelectAllOption: true,});
$("#dropdown").multiselect('deselectAll', false);

$("#dropdown").multiselect("refresh");

Не забудьте обновить. этот код опробован и протестирован. работает на меня.

person Dino    schedule 09.04.2015
comment
Можете ли вы правильно отформатировать код? На данный момент это нечитаемо. - person Juan Carlos Farah; 09.04.2015

Чтобы сбросить множественный выбор в исходное состояние при загрузке страницы, попробуйте:

// Initialize Multiselect
var msDropdownInitialSelected;
$(document).ready(function () {
    $('#msDropdown').multiselect();
    $('#msDropdown').multiselect('select', valuesArray);

    msDropdownInitialSelected = $('#msDropdown').val();
});

// Reset Multiselect
$('msDropdown').on('reset', function(){
    $('#msDropdown').multiselect('select', msDropdownInitialSelected);
    $('#msDropdown').multiselect('refresh');
});
person OneManBand    schedule 13.01.2016

Сброс множественного выбора сработал для меня, последовательно выполнив приведенный ниже код.

$('#ID').multiselect('deselectAll', false);    
$('#ID').multiselect('select', []);   
person Arun    schedule 01.06.2016

Ничего из вышеперечисленного, но следующее не сработало для меня.

$('#ID').multiselect('deselectAll', false);    
$('#ID').multiselect('updateButtonText');
person Pooja Mistry    schedule 28.06.2017

Это код, который работал для меня, все остальные не могли работать.

$('#basicForm').on('reset', function(){ 
    // clearing the categories
    $('#project_category').select2('val', null);
    $('#project_category').attr('value', '');
});
person Soumen Kumar Saha    schedule 13.02.2017