2016-07-21 2 views
0

У меня есть два селектора в ERB. Они используют Избранный плагин:Добавить выбранный параметр в селектор

<%= select_tag :provinces, 
    options_for_select(DataHelper::all_provinces_captions.zip(DataHelper::all_provinces_ids)), 
    {:multiple => true, class: 'chosen-select chzn-select', 
    :data => {:placeholder => 'Filter Provinces/States'}} 
%> 
    <%= f.select :province_ids, 
    (DataHelper::all_provinces_captions.zip(DataHelper::all_provinces_ids)), 
    { include_blank: true }, 
    {multiple: true, data: {placeholder: 'Filter Provinces/States'} } 
%> 

Я пытаюсь скопировать параметры одного из селекторов к другой, сохраняя при этом выбранные опции по-прежнему выбран, однако он не работает. Здесь функция Javascript Я пробовал:

var selectedVals = []; 

$(".chzn-select").chosen().change(function() { 
    $("#provinces option:selected").each(function() { 
    console.log ("this value is " + ($(this).val())); 
    selectedVals.push($(this).val()); 
    }); 
    $("#education_plan_province_ids").empty(); 
    for (var i = 0; i < selectedVals.length; i++) { 
    console.log (selectedVals[i] + " selected"); 
    $("#education_plan_province_ids").append($("<option>" + selectedVals[i] + "</option>").attr('selected', true)); 
    } 
    selectedVals = []; 
}); 

Есть еще одна альтернатива attr('selected', true)?

+0

попробуйте этот '$ (". Chzn-select "). Selected(). Change (function() { $ (" # education_plan_province_ids "). Empty(); $ (" # provinces option: selected ") .each (function() { $ ("# education_plan_province_ids"). append ($ ("") .prop ('selected', true)); }); ' – bipen

+0

I подумайте, что ваша проблема - это позиция скобки в '$ ("# education_plan_province_ids"). append ($ ("")). attr (' selected ', true);' должен быть добавлен ($ ("") .attr ('selected', true)); ' – mdameer

+0

Я отредактирую это, спасибо! Проблема все еще есть там @mdameer –

ответ

2

Здесь вы идете:

$(".chzn-select").chosen().change(function() { 
    $("#education_plan_province_ids").empty(); 
    $("#provinces option:selected").each(function() { 
     $("#education_plan_province_ids").append($("<option>" + this.value + "</option>").prop('selected', true)); 
    }); 
}); 

Я использую prop здесь и избавиться от дополнительного массива (который я думаю, не нужны, но вы можете использовать его, если вы хотите). Также у вас были скобки в неправильном месте для option.

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