我正在使用bsmselect(https://github.com/vicb/bsmSelect)并在页面加载时预先选择以下javascript来预选项目。我正在使用web2py并且{{= fill_messages_saved}}返回一个数组[4,144,142,143],它们都对应于我想要选择的选项的值。不幸的是,订单总是按照我的html部分生成的顺序显示。有没有办法在页面加载时根据值{{= fill_messages_saved}}的数组加载每个项目作为预选选项?我可以使用下面的alert()单独加载每个项目,但是它们不会自上而下加载..它们保留了html中指定的顺序。当我手动选择选项时,它们会正确显示。
jQuery(document).ready(function(){
jQuery(function($) {
$("#fill_messages").bsmSelect({
animate: true,
highlight: true,
plugins: [$.bsmSelect.plugins.sortable(), $.bsmSelect.plugins.compatibility()]
});
});
$(window).load(function(){
$.each({{=fill_messages_saved}}.toString().split(","), function(i,e){
alert()
$("#fill_messages option[value='" + e + "']").prop('selected', true).trigger('change');
});
});
答案 0 :(得分:0)
这是一个没有服务器端信息和html的repro案例。我希望能按照这个顺序[4,3,2,1]预先填充“Chicken”,“Sheep”,“Cow”和“Pig”这个列表,但它显示出“Pig” ,“牛”,“羊”,“鸡”[1,2,3,4]。
jQuery(document).ready(function(){
jQuery(function($) {
$("#fill_messages").bsmSelect({
animate: true,
highlight: true,
plugins: [$.bsmSelect.plugins.sortable(), $.bsmSelect.plugins.compatibility()]
});
});
$(window).load(function(){
$.each([4,3,2,1].toString().split(","), function(i,e){
alert()
$("#fill_messages option[value='" + e + "']").prop('selected', true).trigger('change');
});
});
<select name="fill_messages" id="fill_messages" multiple="multiple" title="Select a fill message">
<option value=1>"Pig"</option>
<option value=2>"Cow"</option>
<option value=3>"Sheep"</option>
<option value=4>"Chicken"</option>
</select>