JS实现下拉复选框非顺序选择后的值顺序显示

编辑
  • 文档创建者:yets11
  • 浏览次数:3810次
  • 编辑次数:9次
  • 最近更新:Kevin-s 于 2019-11-20
  • 1. 概述

    1.1 问题描述

    在报表应用中,会经常用到下拉复选框,但是默认的下拉复选框的值是根据选择的先后顺序来进行显示的,有些情况下用户选择值的顺序不是按照从前到后,这时下拉复选框的值并不会按照备选选来排序,在动态列应用或提交下拉复选框值的时候会看起来比较乱,如下图:

    我们需要提交的时候也是按照备选项顺序来显示的,如下效果:

    这种效果如何实现呢?


    1.2 实现思路

    利用 JavaScript 获取下拉复选框所有备选项值,在编辑结束之后,再将当前复选框值按照所有备选框顺序排序一次。


    2. 示例

    2.1 操作步骤

    1)打开模板%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\DynamicCol\DynamicCol1.cpt

    2)为了方便观察最终效果,我们可以将下拉复选框宽度调宽:

    222

    3)为下拉复选框设置编辑结束事件

    image.pngJavaScript 代码如下:

    var obj = contentPane.parameterEl.getWidgetByName('col').options.data.options.dataSource.data;
    //获取下拉复选框所有备选选
    var pArray = [];
    $.each(obj, function(i, v) {
        pArray.push(v.value);
    })
    //把备选项存入数组pArray
    var v = this.getValue() + ''; //获取当前值
    var cArray = [];
    cArray = v.split(','); //分割数组
    function isChild(element, index, array) {
        return cArray.indexOf(element) >= 0;
    } //排序函数
    var newArray = pArray.filter(isChild); //将排序后的数组存入新数组
    this.setValue(newArray.toString()); //数组转字符串,并设置到下拉复选框中


    2.2 预览效果

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

    注:不支持移动端。


    3. 模板下载

    模板效果在线查看请点击:JS 实现下拉复选框非顺序选择后的值顺序显示.cpt

    已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\参数界面JS实例\14-JS实现下拉复选框非顺序选择后的值顺序显示.cpt

    点击下载模板:14-JS实现下拉复选框非顺序选择后的值顺序显示.cpt


    附件列表


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

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

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