在使用layui复选框组件时,遇到这样一个问题,接口返回值与用户操作值要一起传给后端:

新建比较容易,点击事件将data.elem.checked为true的数据push到一个数组就可以~~~
var arr = [];
form.on('checkbox(switchTest)', function (data) {
if (data.elem.checked == true) {
arr.push(data.value);
} else if (data.elem.checked == false) {
arr.splice(jQuery.inArray(data.value, arr), 1);
}
});
但是在编辑时,有接口返回值的回显数组与用户操作数组拼接在一起,还要考虑接口返回值被用户反选的情况,逻辑比较复杂,删删减减写了一大堆,突然想起来input有个checked属性,又想打人了!!!
<input type="checkbox" lay-filter="switchTest" name="like" lay-skin="primary" class="result" checked="true" title="${item.name}" value="${item.id}">
如果我们找到所有input属性checked为true的value值不就可以了,三行代码搞定,yeah!
var roles = [], arr = [];
arr = document.getElementsByClassName('result');
for (var i = 0;i < arr.length;i ++) {
if (arr[i].checked == true) {
roles.push(arr[i].value)
}
}
网友评论