【表单JS实例】JS实现控件融入背景

楼主
我是社区第485122位番薯,欢迎点我头像关注我哦~
1. 概述
1.1 预期效果

决策报表深色背景下,控件原本的白色显得很刺眼,如下图所示:

如何将控件背景修改成与主体背景颜色一致呢,效果如下图所示:

1.2 实现思路

使用 JS 获取主体背景颜色,然后修改控件背景,以及其他控件属性。

2. 示例

2.1 报表设计

1)新建一个决策报表,设置 body 布局方式为绝对布局,如下图所示:

2)如下图依次添加下拉单选控件,日期控件,文本控件,数字控件和按钮控件,并给控件设置默认值。

3)日期控件需要取消勾选允许直接编辑,否则直接编辑日期控件内容时,会出现白色背景色。

4)按钮控件自定义背景,初始背景颜色设置为透明,如下图所示:

5)选中 body 添加初始化后事件,如下图所示:

JavaScript 代码如下:

  1. setTimeout(function(){        
  2.         
  3.         //以下修改文本控件、数字控件的属性        
  4.         $(".fr-texteditor").css({"background":"rgba(0,0,0,0)","color":"#c0c0c0"});//设置背景和字体颜色
  5.         $(".fr-texteditor").css("border","none");//去除边框

  6.         //以下修改下拉单选控件,下拉复选控件和日期控件的属性
  7.         $(".fr-trigger-text.fr-border-box").css({"background":"rgba(0,0,0,0)"});//设置控件本身背景
  8.         $(".fr-trigger-text").find("input").css({"background":"rgba(0,0,0,0)","color":"#c0c0c0"});//设置控件输入框背景和字体颜色
  9.         $(".fr-trigger-text").css("border","none");//去除边框
  10.       $(".fr-trigger-btn-up").css({"background":"rgba(0,0,0,0)","border":"none"});//设置控件右侧点击按钮        
  11. },100)        
复制代码

2.2 效果预览

保存报表,点击表单预览,效果如下图所示:

注:不支持移动端。

注:预览时,若控件出现如下白底效应,说明报表工程 JAR 包版本较低,可通过升级实现预期效果。

3. 模板下载

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\frm\JS实现控件融入背景.frm

模板下载见附件


编辑于 2020-12-29 17:27  
分享扩散:

沙发
发表于 2021-3-24 10:59:01
赞,很实用
板凳
发表于 2021-4-4 14:03:50
地板
发表于 2021-4-7 10:05:23
5楼
发表于 2021-6-23 16:51:15
但是背景色是白色的时候  怎么把下拉框的倒三角符号设置成黑色nei
6楼
发表于 2021-7-14 15:55:31
7楼
发表于 2021-7-16 15:52:53
实用66
8楼
发表于 2021-11-9 17:20:29
安装了新适应插件 不适用
9楼
发表于 2022-1-14 15:07:53

好像FineReport 11不支持,我找到另一种办法,首先查看一下日期控件的代码(搜狗浏览器选中日期控件右键查看属性):

其中的这一句就是div每个自定义组件特有的属性,即控件名称。我们使用Jquery代码通过某个属性名称也可以获取到该元素对象。

既然可以找到日期控件元素,我们就可以把代码修改为(在上面博主的基础上新增该代码即可):

$("div[widgetname*='SDATE']") .css({

"background": "rgba(0,0,0,0)",

"color": "#c0c0c0"

}); //设置背景和字体颜色

$("div[widgetname*='SDATE']") .css("border", "none"); //去除边框

其中“SDATE”是日期的控件名:

效果:

10楼
发表于 2022-1-14 15:41:50

FineReport 11之后,代码可以这样写:

//修改日期控件背景
        $("div[widgetname*='SDATE']") .css({
                "background": "rgba(0,0,0,0)",
                "color": "#c0c0c0"
        }); //设置背景和字体颜色
$("div[widgetname*='SDATE']") .css("border", "none"); //去除边框
$(".bi-focus-shadow") .css("border", "none"); //去除官方的控件阴影

其中“SDATE”是日期控件的控件名称。

11楼
发表于 2022-5-9 16:07:19
感谢分享。
12楼
发表于 2022-8-30 19:34:32
没有模板,根据代码设置好像没实现
13楼
发表于 2022-10-13 17:37:21
附件在哪啊宝  找不到
14楼
发表于 2022-10-14 09:58:58
有用!
15楼
发表于 2023-5-19 11:01:22
有10以上版本的吗
16楼
发表于 2023-12-11 11:58:30

感謝, 11 可以用
17楼
发表于 5 天前
移动端怎么实现这个功能呢  这个js不适用于移动端
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表