历史版本11 :JS实现复选按钮控件全选和批量操作 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 问题描述编辑

在使用我们的复选框控件的时候,如何实现点击全选,则下面的所有信息都被选中呢?效果如下:
222

2. 解决思路编辑

在复选框中的初始化事件中把控件加入到一个全局数组里,然后在全选复选框里对数组里的控件进行遍历赋值。

3. 解决步骤编辑

1)模板设计如下,A2单元格的左父格为B2
222
2)选中A1单元格(全选复选框),添加一个状态改变事件
222
具体代码如下:
var flag=this.getValue(); //获取当前复选框控件的状态,true /false for(var i=0;i<window.lineboxes.length;i++){ //循环遍历每个复选控件 var cr=FR.cellStr2ColumnRow(window.lineboxes[i].options.location); //由每个控件位置获取行号列号 _g().setCellValue(cr.col, cr.row, flag); //逐一赋值当前状态 }
3)选中A2单元格(单选复选框),添加一个初始化后事件
222
具体js代码如下:
if (!window.lineboxes) { window.lineboxes = []; //控件加入到一个全局数组里 } lineboxes[lineboxes.length] = this;
4)通过以上设置时,可以在点击全选复选框时,所有复选框选中,取消全选,所有的全不选,但是存在一个问题,如果单独复选或不选中其中一个时,全选复选框不会自动判断当前是否全选还是全不选。需要对单选复选框的值改变后进行设置,添加状态改变后事件,如下图
222
具体js代码如下:
//当前复选框未选择时,设置全选不选中 if(this.getValue()==false){ _g().setCellValue('A1',null,false); } else { var allChecked=true; //循环判断所有复选框都选中时,将全选复选框选中 for(var i=0;i<lineboxes.length;i++){ if(lineboxes[i].getValue()==false){ allChecked=false; } } //如果全选中时,自动让A1全选复选框选中 _g().setCellValue('A1',null,allChecked); }

5)保存,点击填报预览,就可看到上图效果

4.移动端效果编辑

经测试,移动端不支持该js