select框下拉多选(从数据库中获取选项)

    前面写了几篇关于select的文章,今天说一下select下拉框多选的问题。下拉框多选selectpicker插件做的非常漂亮,selectpicker是bootstrap里的一个下拉框的组件。我在这个插件初始化之前稍微加点东西,实现下拉框的选项从数据库中读取并根据传入值默认选中。

使用jQuery的扩展方法,适用于每一个select示例。

$.fn.ajaxselectmore = function(options) {
	var select = this;
	var data = options.value.split(",");
	$.get(options.url,function(result){
	    for(key in result){
	        if(data.indexOf(key)>-1){
	            select.append("<option value='"+key+"' selected>"+result[key]+"</option>");
	        }else{
	            select.append("<option value='"+key+"'>"+result[key]+"</option>");
	        }
	    }
            //初始化selectpicker插件
	    select.selectpicker({
	    });
	});
};

页面引入selectpicker插件需要的js和css,不想自己去找的同学可以到我这项目的包来下载(这个包里的fonts也需要)

<link rel="stylesheet" type="text/css" href="${ctx}/reports/tiles/bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="${ctx}/reports/tiles/bootstrap/css/bootstrap-select.min.css" />
<script type="text/javascript" src="${ctx}/reports/tiles/js/jquery-2.2.3.min.js"></script>
<script type="text/javascript" src="${ctx}/reports/tiles/bootstrap/js/bootstrap-select.min.js"></script>
<script type="text/javascript" src="${ctx}/reports/tiles/bootstrap/js/bootstrap.min.js"></script>

<div class="col-xs-8">
    <select id="dataId" name="dataId" class="selectpicker" multiple data-live-search="true" style="width:100%;">
    </select>
</div>

添加 class="selectpicker" multiple data-live-search="true",页面初始化方法如下

$("#dataId").ajaxselectmore({
   url:"${ctx}/rep/getAllData",
   value:"1,2,3"
});

url为从后台获取数据的接口地址,因为是多选,所以value是多个值用","隔开。

/**
 * 获取所有数据项
 * @return json
 */
@RequestMapping(value="/getAllData",produces = "application/json; charset=utf-8")
@ResponseBody
public String getAllData(){
	List<DataInfo> list = dataService.getInfoList();
	Map<String, String> data = new HashMap<>();
	list.forEach(info->{
		data.put(info.getId(), info.getDataName());
	});
	return JSON.toJSONString(data);
}
	

后端代码也贴个方法出来给大家参考一下。

实现效果。

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值