layui中checkbox组件,怎么判断是否为checked?判断都勾选了哪个?下面的console.log("周一已经选中"),不输出啊?
<form class="layui-form" action="">
<div class="layui-form-item" id="week" style="height:46px">
<!-- <label class="layui-form-label">原始复选框</label> -->
<div class="layui-input-block" id="week1">
<!-- 默认选择添加 checked="" -->
<input type="checkbox" name="monday" class="week" id="monday" value="monday" lay-skin="primary" title="周一" lay-filter="week">
<input type="checkbox" name="trusday" class="week" id="trusday" value="trusday" lay-skin="primary" title="周二" lay-filter="week">
<input type="checkbox" name="wednesday" class="week" id="wednesday" value="wednesday" lay-skin="primary" title="周三" lay-filter="week">
<input type="checkbox" name="thursday" class="week" id="thursday" value="thursday" lay-skin="primary" title="周四" lay-filter="week">
<input type="checkbox" name="friday" class="week" id="friday" value="friday" lay-skin="primary" title="周五" lay-filter="week">
<input type="checkbox" name="saturday" class="week" id="saturday" value="saturday" lay-skin="primary" title="周六" lay-filter="week">
<input type="checkbox" name="sunday" class="week" id="sunday" value="sunday" lay-skin="primary" title="周日" lay-filter="week">
</div>
</div>
</form>
layui.form.on('checkbox(week)', function (data) {
if($('#monday').attr("checked") === "checked"){
console.log("周一已经选中")
}
})
layui.form.on('checkbox(week)', function(data) {
// 当前点击的复选框是否被选中
console.log(data.elem.checked)
// 用prop()判断checked,选中返回true,未选中返回false
if ($('#monday').prop("checked")) {
console.log("周一已经选中")
}else{
console.log("周一没被选中")
}
})
https://www.bejson.com/doc/layui/doc/modules/form.html
你表单 结构都不对 感觉
<input lay-filter="switchTest" type="checkbox" name="type[]" value="1" title="葡萄">
根据参考资料和已有知识,可以给出如下解决方案:
在layui中的checkbox组件中,可以使用form.on('checkbox(filter)', function(data){})方法来监听checkbox状态变化,当checkbox状态改变时可以执行相应的代码。具体实现方法如下:
form.on('checkbox(test)', function(data){
console.log(data.elem.checked); // 是否被选中,true或false
});
可以在每个checkbox上设置相同的name属性,然后通过document.getElementsByName("name")获取一个包含所有name属性值为name的元素的NodeList,再使用for循环遍历,判断每个checkbox的状态。具体实现方法如下:
var nodes = document.getElementsByName("name");
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].checked) {
console.log(nodes[i].value); // 勾选的checkbox的值
}
}
可以使用radio组件替代checkbox组件,或者使用js来实现只允许选一个的效果,具体实现方法如下:
var checkboxs = document.getElementsByName("name");
for (var i = 0; i < checkboxs.length; i++) {
checkboxs[i].onclick = function () {
for (var j = 0; j < checkboxs.length; j++) {
checkboxs[j].checked = false; // 先将所有checkbox的状态设置为未勾选
}
this.checked = true; // 将当前勾选的checkbox的状态设置为勾选
}
}
以上是基于原生的HTML和JavaScript的实现方法,如果使用layui提供的组件,也可以参考文档进行相应的实现。