bootstrap switch 开关状态改变触发事件
- 页面中的开关事件onSwitchChange
初始化页面的时候就把开关进行初始化了。
<script type="text/javascript">
$(document).ready(function(){
$(".checkbox").bootstrapSwitch({
onText : "XX ", // 设置ON文本
offText : " ", // 设置OFF文本
onColor : "success",// 设置ON文本颜色 (info/success/warning/danger/primary)
offColor : "danger", // 设置OFF文本颜色 (info/success/warning/danger/primary)
size : "small", // 设置控件大小,从小到大 (mini/small/normal/large)
handleWidth:"35",//设置控件宽度
// 当开关状态改变时触发
onSwitchChange : function(event, state) {
if(state){//改input的值
}else{
}
}
});
});
</script>
搜了几个都是看event的defaultvalue的,没有看见input的id是多少,还都是页面中就只有一个开关,直接能用的那种
2. 考虑获取开关事件input的id
event.target.id;//input的id,这样居然能获取到操作的这个input的id,能用
3. 用jq改了他,这样页面上不管有多少的开关都没有问题了
onSwitchChange : function(event, state) {
var isornotId = event.target.id;//input的id
if(state){//改input的值
$("#"+isornotId).val("1");
}else{
$("#"+isornotId).val("0");
}
}
页面代码
<c:forEach items="${XXXXBeanList}" var="item" begin="0" end="${XXXXXList.size()}" varStatus="status">
<div class="form-group" style="margin-left: 30px">
<label class="col-sm-3 control-label">是否收费:</label>
<div class="col-sm-5">
<div class="switch">
<c:if test="${item.isornot eq 0}">
<input type="checkbox" class="checkbox" id="isornot${status.index}" name="PcChargeWayTempStandardDynamicBean[${status.index}].isornot" value="${item.isornot}" />
</c:if>
<c:if test="${item.isornot eq 1}">
<input type="checkbox" class="checkbox" id="isornot${status.index}" name="PcChargeWayTempStandardDynamicBean[${status.index}].isornot" value="${item.isornot}" checked="checked"/>
</c:if>
</div>
</div>
</div>
</c:forEach>
- 循环出来的开关那就循环解决
在onSwitchChange中把input获取到就可以任性的修改了,我也不用写onclick事件,也不用两个input搭配干活,很方便嘛。
checkbox传值还有问题,不选中不传值,再加一个input hidden解决