在使用Layui制作表单需要打印时,发现无论复选框是否选择,在打印预览时√始终会显示,因为Layui框架表单的复选框√是单独写的而非原生input复选框,所以需要特殊处理一下
未处理之前原表单内容是这样

打印预览是这样

选择与没有选择的区别只是边框粗了一些,这显然不是很明显,也不能满足日常使用者的需求。
最开始简单的想通过css改变颜色来处理,结果发现该元素的字体颜色本身就是白色,而打印预览却变成了灰色的样子

没办法,只能通过曲线救国的方法。大体思路是首先将所有的复选框的√元素取消,然后通过监听复选框来动态添加和删除√元素。
css部分:
.layui-icon-ok::before {
content: '';//将√去掉
}
.check_now::before{content: '✔';!important;}//通过样式优先级添加√
js部分:
form.on('checkbox(filter_check)', function(data){
console.log(data.elem); //得到checkbox原始DOM对象
console.log(data.othis); //得到美化后的DOM对象
if(data.elem.checked){
$(data.othis).find('.layui-icon-ok').addClass('check_now');//这里需要使用美化后的DOM对象,因为很多元素是美化后才生成
}else {
$(data.othis).find('.layui-icon-ok').removeClass('check_now');
}
});
最终效果,原始表单:

打印预览:
