2016-06-13 3 views
1

В прилагаемой скрипке у меня есть два варианта: «Дания» и «Франция», если выбран выбранный выбор. Если я выберу больше значений в поле выбора и нажмите кнопку очистки, я хотел бы восстановить выбранный выбор с теми же предварительно заполненными значениями «Дания» и «Франция».Восстановить выбранные значения в выбранном порядке Выберите

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

$("#Clear").click(function() { 
    $('.chosen-select option').prop('selected', false).trigger('chosen:updated'); 
}); 

JSFiddle

UPDATE: Было бы очень хорошо, если есть способ таким образом, что это не имеет значения, какие опции предварительно заполнены, но они должны быть восстановлены, если таковые имеются.

ответ

1

Что вам нужно, так это создать массив предварительно выбранного значения параметра. Затем вы можете использовать цикл forEach с этим массивом, чтобы изменить значение selected и получить начальное состояние перед обновлением триггера.

$("#countries").chosen(); 

let preselected = []; 

$('[selected]').each((i, node) =>{ 
    preselected.push($(node).attr('value')); 
}); 

$("#Clear").click(function() { 
    $('.chosen-select option').prop('selected', false); 

    preselected.forEach(pre => { 
     $(".chosen-select option[value='" + pre + "']") 
     .attr('selected', 'selected') 
     .trigger('chosen:updated'); 
    }); 
}); 

Fiddle

Как вы можете видеть here нет ничего в плагине вы можете использовать, чтобы достичь этого, кажется, что вы должны сделать это, изменив DOM и обновление триггера. Я бы использовал код из ответа luckyape и моего, смешивая его.

+0

есть способ сделать это таким образом, что это не имеет значения, какие параметры предварительно заполнены, но они должны быть восстановлены, если таковые имеются? – Jake

+0

Ну, вы можете зациклиться на onload, чтобы узнать, какие элементы выбраны и извлекают их. –

+0

См. Обновленный код и скрипку. –

2

Дайте этому идти

$("#countries").chosen(); 

$("#Clear").click(function() { 
    $('.chosen-select option').prop('selected', false); 
    $('.chosen-select').val(['Denmark', 'France']).trigger('chosen:updated'); 
}); 

http://jsfiddle.net/y5cnd018/

+1

Это тоже работает, но есть ли способ сделать так, что неважно, какие варианты предварительно заполнены, но они должны быть восстановлены, если они есть? Хосе дал хорошее решение выше, но задавался вопросом, есть ли у него что-то, что уже делает это, как и вы. – Jake

+1

См. Мое редактирование @Jake, похоже, в документах ничего нет. –