首页 > 其他 > 详细

multiselect 初始化赋值

时间:2015-07-01 02:13:21      阅读:2266      评论:0      收藏:0      [点我收藏+]

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

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

bubuko.com,布布扣
?
在网上找了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事件,然后在刷新。

bubuko.com,布布扣
?
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,问题全部搞定

bubuko.com,布布扣
?


bubuko.com,布布扣
?
?

?


multiselect 初始化赋值

原文:http://toknowme.iteye.com/blog/2222996

(2)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!