JS实现隐藏tab块标题

1. 描述

用户希望可以自定义设置tab的展现与隐藏,比如不同用户可以查看不同的tab块,或者隐藏一些无关tab页的内容,该如何实现呢?

2. 思路

通过js隐藏tab标题。

注:通过js的方法,可能导致tab内部组件不能根据正确的宽高进行自适应,因此建议通过设计器自带属性——设置tabpane高度为0的方法,来实现隐藏。详情请参考:tab布局第3.6章。

注:此功能不支持移动端和h5方式预览。

3. 操作步骤

3.1 示例一(隐藏整个tab标题)

1)打开模板

打开模板 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\demo\analytics\financial2\生产库存分析.frm

2)添加初始化事件

在决策报表右上角控件设置中,选择tabpane0控件,添加初始化事件,如下所示:

http://help.finereport.com/uploads/201808/20180813111958_8153.png

jar包在2018-1-24之前,所要添加的js如下:

$('div:lt(1)',this.element.parent()).hide();//隐藏tab标题

而jar包为2018-1-24及之后,隐藏tab标题的js代码如下:

this.element.parent().hide();

注:是添加到tabpane块组件的初始化事件,不是tab块里面的每个tab页签的初始化事件。

3)效果预览

保存模板,预览效果如下:

http://help.finereport.com/uploads/201808/20180813111958_4616.jpg

3.2 示例二(隐藏部分tab标题)

1)添加初始化事件

以上面的模板为例,修改初始化事件,如下所示:

http://help.finereport.com/uploads/201808/20180813111958_4382.png
js代码如下:

this.options.form.getWidgetByName("tabpane0").setTabVisible("tab1", false);

注:

要尽量避免重命的情况!若存在重名的tab,页面初始化的时候,后加载的tab会覆盖先加载的tab,所以js里获取到的,可能并不是预期要处理的tab。比如:模板里有两个tabpane0和tabpane1,页面加载的时候tabpane1是后加载的,那么你通过this.options.form.getWidgetByName("tabpane0").setTabVisible("tab2", false);获取到的tab2,其实最后会是tabpane1里的tab2,前面即使写获取的控件名为tabpane0也是无效的。

另外,用传统的写法是不支持tab隐藏的,比如:this.options.form.getWidgetByName("Tab0").setVisible();,这种传统写法只适合用于控制组件,比如report0这种报表块组件的隐藏与否。

注:当模板导出时,被隐藏的tab不会被导出!

2)效果预览

保存模板,预览效果如下:

http://help.finereport.com/uploads/201808/20180813111958_2902.jpg

4. 预览效果

4.1 PC端预览效果

示例一:

示例二:

http://help.finereport.com/uploads/201808/20180813111958_5246.jpg

4.2 移动端预览效果

注:不支持移动端。

5. 已完成模板

1)示例一

模板效果在线查看请点击:JS实现隐藏tab块标题-示例一.frm

已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\12-JS实现隐藏tab块标题-示例一.frm

右击存储模板

2)示例二

模板效果在线查看请点击:JS实现隐藏tab块标题-示例二.frm

已完成的模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表单JS实例\12-JS实现隐藏tab块标题-示例二.frm

右击存储模板

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现tab选项卡切换的一种基本思路是,通过JavaScript操作DOM元素来实现对选项卡内容的切换。以下是一个简单的实现方法: 1. HTML结构部分:在HTML中定义选项卡的标题和内容,一般使用ul/li标签表示选项卡标题,使用div标签表示选项卡内容。 ``` <ul> <li class="active">Tab 1</li> <li>Tab 2</li> <li>Tab 3</li> </ul> <div class="tab-content"> <div class="tab-pane active">Tab 1 content</div> <div class="tab-pane">Tab 2 content</div> <div class="tab-pane">Tab 3 content</div> </div> ``` 2. CSS样式部分:定义选项卡样式,如选项卡标题、选项卡内容等的样式。 3. JavaScript部分:通过JavaScript来实现选项卡的切换。 ``` // 获取所有选项卡标题元素 var tabs = document.querySelectorAll('ul li'); // 获取所有选项卡内容元素 var tabPanes = document.querySelectorAll('.tab-pane'); // 给每个选项卡标题元素添加点击事件 tabs.forEach(function(tab, index) { tab.addEventListener('click', function() { // 隐藏所有选项卡内容 tabPanes.forEach(function(tabPane) { tabPane.classList.remove('active'); }); // 显示当前选项卡内容 tabPanes[index].classList.add('active'); // 切换选项卡标题的active类 tabs.forEach(function(tab) { tab.classList.remove('active'); }); tab.classList.add('active'); }); }); ``` 在上述JavaScript代码中,我们首先获取所有选项卡标题元素和选项卡内容元素,然后对每个选项卡标题元素添加点击事件。每当用户点击某个选项卡标题时,我们会先隐藏所有选项卡内容,然后显示当前选项卡内容,并且切换选项卡标题的active类,以此来实现选项卡的切换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值