JS实现复选框控件全选

编辑
  • 文档创建者:印然
  • 浏览次数:10003次
  • 编辑次数:14次
  • 最近更新:ukae 于 2018-08-10
  • 1. 描述

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

    2. 思路

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

    3. 操作步骤

    1)模板设计如下,A2单元格的左父格为B2
    2)选中A1单元格(全选复选框),添加一个状态改变事件
    JS代码如下:
    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单元格(单选复选框),添加一个初始化后事件
    JS代码如下:
    if (!window.lineboxes) {  
        window.lineboxes = [];        //控件加入到一个全局数组里
    }  
    lineboxes[lineboxes.length] = this;
    4)通过以上设置时,可以在点击全选复选框时,所有复选框选中,取消全选,所有的全不选,但是存在一个问题,如果单独复选或不选中其中一个时,全选复选框不会自动判断当前是否全选还是全不选。需要对单选复选框的值改变后进行设置,添加状态改变后事件,如下图:

    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);
    }

    4. 预览效果

    4.1 PC端预览效果

    保存,点击填报预览,实现效果如描述中所示。

    4.2 移动端预览效果

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

    5. 已完成模板

    模板效果在线查看请点击:JS实现复选框控件全选.cpt
    已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\填报预览JS实例\53-JS实现复选框控件全选.cpt




    附件列表


    主题: 二次开发
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]