Bootstrap-select下拉多选获取选中的数据

刚好用到bootstrap-select插件,遇到问题:

1.如何把选中的人员[名字+id]获取到?

2.后台要求的是json格式的数据,如何处理?

3.前端用el表达式在jsp中绑定了<select><option>,把id绑到哪个位置方便获取?(实际情况是绑到哪儿都不好获取)


实现出来的样式:

解决:1.JSP中绑定数据 顺便把后台返回的id绑到 option 的class属性上去;

<select id="id_select" class="form-control selectpicker"
												name="staffDo" οnchange="getOptoions(this);" multiple
												data-live-search="true">
													<c:forEach items="${workers}" var="workers">
														<option value="${workers.staffName}"
															class="${workers.staffId}">${workers.staffName}【${workers.mobielTel}】</option>							</c:forEach>
											</select>
2.给select绑定一个onchange事件:
getOptoions(this);
3.检查插件生成的元素发现选中元素都会添加一个"selected"类名,则通过类名获取

//取出选择的任务执行人的方法
	function getOptoions() {
		var id = "", staffName = "", staffs = [], staffNameStr = "";
		//循环的取出插件选择的元素(通过是否添加了selected类名判断)
		for (var i = 0; i < $("li.selected").length; i++) {
			//通过选择器和筛选条件找到name和ID
			id = $("li.selected").eq(i).find("a").attr("class");
			staffNameStr = $("li.selected").eq(i).find(".text").text();
			//用来截取名字(去掉取出来的电话号码)
			staffName = staffNameStr.substring(0, staffNameStr.indexOf("【"));
			//以键值对的形式加到数组中去
			staffs.push({
				staffId : id,
				staffName : staffName
			});
		}
		//将包含对象的数组转换成json格式
		var staffStr = JSON.stringify(staffs);
		//赋值给隐藏的Input域
		if (staffStr.length > 0) {
			$("#taskStaffs").val(staffStr);
		} else {
			$("#taskStaffs").val("");
		}

	}


由于还有表单验证等一堆东西,先写到这儿自己记一下。
PS:这里发现for循环比.each()方法要灵活很多,当然也有可能是对这个方法理解的不是很透彻。



继续学习中。



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值