JS实现复选按钮控件全选

  • Last update:  2020-08-23
  • 1. 概述

    1.1 问题描述

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

    222


    1.2 实现思路

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


    2. 示例

    2.1 操作步骤

    1)模板设计如下,A2 单元格的左父格为 B2

    222

    2)选中 A1 单元格(全选复选框),添加一个状态改变事件

    image.png

    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 单元格(单选复选框),添加一个初始化后事件

    image.png

    JS 代码如下:


    if (!window.lineboxes) {  
        window.lineboxes = [];        //控件加入到一个全局数组里
    }  
    lineboxes[lineboxes.length] = this;

    4)通过以上设置时,可以在点击全选复选框时,所有复选框选中,取消全选,所有的全不选,但是存在一个问题,如果单独复选或不选中其中一个时,全选复选框不会自动判断当前是否全选还是全不选。需要对单选复选框的值改变后进行设置,添加状态改变后事件,如下图:

    image.png

    JS 代码如下:


    //A1位一键全选按钮的位置,可根据实际情况修改
    //当前复选框未选择时,设置全选不选中  
    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);  
    }


    2.2 预览效果

    保存模板,点击填报预览,PC 端效果如下所示:

    222

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


    3. 模板下载

    模板效果在线查看请点击:JS 实现复选框控件全选.cpt

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

    点击下载模板:53-JS实现复选框控件全选.cpt


    Attachment List


    Theme: 下架文档
    Already the First
    • Helpful
    • Not helpful
    • Only read

    滑鼠選中內容,快速回饋問題

    滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

    不再提示

    10s後關閉

    Get
    Help
    Online Support
    Professional technical support is provided to quickly help you solve problems.
    Online support is available from 9:00-12:00 and 13:30-17:30 on weekdays.
    Page Feedback
    You can provide suggestions and feedback for the current web page.
    Pre-Sales Consultation
    Business Consultation
    Business: international@fanruan.com
    Support: support@fanruan.com
    Page Feedback
    *Problem Type
    Cannot be empty
    Problem Description
    0/1000
    Cannot be empty

    Submitted successfully

    Network busy