2016-07-22 76 views
0

我有两个multiselectors如下另一种多功能的选择值的多功能选择值,使用所选择的插件的第一个:如何在基于

<%= 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'}, :style => "width: 100%; height: 100px;"}%> 

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

我想要在:provinces选定的值选择器,与页面加载时:province_ids选择器的选定值相同。这种类似的东西:

$(document).ready(function() { 
    $("#education_plan_province_ids option:selected").each(function() { 
    $("#provinces option[value='"this"']").prop('selected', true); 
    }); 
}); 

除,当然,不工作:d

回答

0

var updateDropdown = function() { 
 
    $("#provinces option:selected").removeAttr("selected"); 
 
    var educationPlanProvinceIds = $("#education_plan_province_ids").val() 
 
    if (educationPlanProvinceIds) { 
 
    educationPlanProvinceIds.forEach(function(id) { 
 
     $('#provinces option[value="' + id + '"]').prop("selected", true) 
 
    }) 
 
    } 
 
    // chosen needs to know when its underlying select element has been changed 
 
    $("#provinces").trigger("chosen:updated") 
 
} 
 

 
$(document).ready(function() { 
 
    updateDropdown() 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<select id="education_plan_province_ids" multiple> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3" selected="true">3</option> 
 
</select> 
 
<select id="provinces" multiple> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select>

+0

有没有办法为此在页面加载,而不是在特定的变化? –

+0

是啊,如果你不希望无论是选择的改变,你可以只运行负载来代替。 – larz

+0

变化监听器里的功能,您可以相应地改变你的答案?如果您正在使用它包装(文件)。就绪,然后在函数内部不工作(没有更多的'this'为例)。 –

0

你可以尝试这样的事情

$(document).ready(function() { 
 
    $("#education_plan_province_ids option:selected").each(function() { 
 
    var val = $(this).val(); 
 
    $("#provinces option[value='"+val+"']").attr('selected','selected'); 
 
    
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select id="education_plan_province_ids" multiple> 
 
    <option value="volvo" >Volvo</option> 
 
    <option value="saab" selected>Saab</option> 
 
    <option value="vw" selected>VW</option> 
 
    <option value="audi" selected>Audi</option> 
 
</select> 
 

 

 
<select id="provinces" multiple> 
 
    <option value="volvo">Volvo</option> 
 
    <option value="saab">Saab</option> 
 
    <option value="vw">VW</option> 
 
    <option value="audi" >Audi</option> 
 
</select>

+0

这是接近~~但它不工作,我想是因为我们正在使用所选库(我编辑的问题)。 –

+0

它正在获取的值,只是没有分配他们的选定的值 –

+0

@KeyanRhm尝试更新的代码 – Kld