multiselect 初始化赋值

jquery有很多插件,比如jquery.multiselect.js(多选下拉框),使用的时候非常便捷,但有的时候你遇到问题,可能非常难解决(今天解决这个问题弄了将近2个小时),一般情况下解决问题的思路可能如下:
(1)百度搜索,去寻找解决方案(自从有了爬虫这个东西,答案就泛滥了,几乎是千篇一律,原创的东西越来越少
(2)通过F12调试,分析出原因
(3)但是如果还是解决不了,这个时候你必须要看源码

需求:在初次加载的时候,给multiselect设置多个值。


 
在网上找了N多的答案,几乎是千篇一律:
(1)我自己封装了一个方法,就是给multiselect设置一个数组的值,然后刷新一下
 function multiselectRefreshWithValues(multiselectId,vals) {
  $("#"+multiselectId).multiselect({
            checkAllText: "全选",
            uncheckAllText: "全不选",
            noneSelectedText: "==请选择==",
            selectedList: 100
        });
  $("#"+multiselectId).val(vals);
     $("#"+multiselectId).multiselect("refresh");     
 }

这种方案只能显示一个值,真的找不到原因,

然后我就F12了,发现我们本身的select全部是隐藏掉的,然后multiselect自己生成了很多的ul li label input等等,这个时候我就想 我可以自己拼装出 input的id,然后调用 click事件,然后在刷新。


 
var multiselectName = "multiselect_"+multiselectId;
     $("input[name='"+multiselectName+"']").each(function(){
      if(vals.contains($(this).val())) {
       $(this).attr("aria-selected",true);
      }
     })

通过这种方案,完全可以设置 input的aria-selected属性,但是显示的时候,什么也没有了。

最后逼到没有办法了,看源码:

(1)刷新的时候有很多的属性,可以设置,这个时候设置multiple=true,问题全部搞定


 



 
 

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值