[ABI 5.2] 按钮和tab页联动

20782
11

zm1997 数据达人Lv4

发表于2021-1-30 11:28

悬赏1

已解决

楼主
  • /***
  • *按钮必须使用同一个分组名
  • **/
  • function checkBtnAndBindTab(btns, tabctrlId) {
  •     var ready = true;
  •     var btnDoms = [];
  •     if(!g_rptpage.calcParam){
  •         ready = false;
  •     }else{
  •         for (var i = 0, l = btns.length; i < l; i++) {
  •             var param = g_rptpage.calcParam.getParamByName(btns);
  •             if(!param){
  •                 ready = false;
  •                 break;
  •             }
  •             btnDoms.push(param.getBaseDom());
  •         }
  •     }
  •     if(!ready){
  •         var func = checkBtnAndBindTab.bind(window,btns,tabctrlId);
  •         setTimeout(func,50);
  •     }else{
  •         window["current_active_btn_idx"] = 0;
  •         var bindTabClick = function(tabctrlId,idx){
  •             window["current_active_btn_idx"] = idx;
  •             g_rptpage.widgets[tabctrlId].setActive(idx);
  •         };
  •         var bindTabHover = function(tabCtrlId,idx){
  •             stopAutoCheckBtn();
  •             execDomEvent(btnDoms[idx],"click");
  •         };
  •         var autoCheckBtn = function(){
  •             var nextidx = (window["current_active_btn_idx"]+1)%btnDoms.length;
  •             execDomEvent(btnDoms[nextidx],"click");
  •             window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
  •         };
  •         var stopAutoCheckBtn = function(){
  •             if(window["_auto_check_btn_timer"]){
  •                 clearTimeout(window["_auto_check_btn_timer"]);
  •                 window["_auto_check_btn_timer"] = null;
  •             }
  •         };
  •         var startAutoCheckBtn = function(){
  •             window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
  •         };
  •         for(var i=0,l=btnDoms.length;i<l;i++){
  •             addEvent(btnDoms,"click",bindTabClick.bind(btnDoms,tabctrlId,i));
  •             jQuery(btnDoms).hover(bindTabHover.bind(btnDoms,tabctrlId,i),startAutoCheckBtn);
  •         }
  •         startAutoCheckBtn();
  •     }
  • }
  • checkBtnAndBindTab(["@cc","@cl","@zl","@fx"],"HHH87");

这个脚本适用于两组tab页和按钮的组合吗?



最近看过此主题的会员

esen_5IQ824CW2U

chestnut

esen_55I6HYQMKG

yangsiwen

ncjindsif

ly.

esen_513E25YO2T

jiangqiao

eABI

esen_4YNPQEX87K

esen_4ZC808HWLW

yangqh

hhdtest

zjy2020

最佳答案

xxxl

发表于2021-1-30 11:28

只看该作者

取消 关注该作者的回复

本帖最后由 xxxl 于 2021-2-2 11:49 编辑
zm1997 发表于 2021-2-1 09:49
这份就是我现在用的脚本,可以看看是哪里出了问题。导致运行的时候两个tab页动也不会动
...

公司简介demo脚本适用于bi,但不适用于abi,abi上存在一定问题,建议更换脚本,比如用这个https://bbs.esensoft.com/forum.p ... mp;extra=#pid167184需要多个tab轮换可将脚本封装起来。
11个回答

只看楼主

xuxp 初学数据Lv2

发表于2021-1-30 11:29

只看该作者

取消 关注该作者的回复

沙发

可以同时应用

zm1997 数据达人Lv4

发表于2021-1-30 11:49

只看该作者

取消 关注该作者的回复

板凳


按钮的分组名是否需要一致?

xuxp 初学数据Lv2

发表于2021-1-30 11:54

只看该作者

取消 关注该作者的回复

地板

zm1997 发表于 2021-1-30 11:49
按钮的分组名是否需要一致?

如果两组按钮分别控制自己的tab,只要各组的分组名一致就可以

zm1997 数据达人Lv4

发表于2021-1-30 11:57

只看该作者

取消 关注该作者的回复

5#

xuxp 发表于 2021-1-30 11:54
如果两组按钮分别控制自己的tab,只要各组的分组名一致就可以

是需要分别控制自己的tab,第一个分组名是1,第二个分组名是2。

xuxp 初学数据Lv2

发表于2021-1-30 11:59

只看该作者

取消 关注该作者的回复

6#

zm1997 发表于 2021-1-30 11:57
是需要分别控制自己的tab,第一个分组名是1,第二个分组名是2。

那这两个要分别设置自己的分组名

zm1997 数据达人Lv4

发表于2021-1-30 14:24

只看该作者

取消 关注该作者的回复

7#

本帖最后由 zm1997 于 2021-1-30 14:29 编辑

xuxp 发表于 2021-1-30 11:59
那这两个要分别设置自己的分组名

checkBtnAndBindTab(["@gfs","@gd","@zj","@fgl","@ddyc"],"HHH87");
checkBtnAndBindTab(["@tq","@xl"],"HHH488");
我的脚本里关于tab和按钮的联动的调用脚本。第一个的分组名是1,第二个的分组名是2

分别设置了,但是运行的时候是一个动的时候,另外一个不动。不能两个一起动,不知道为什么

xuxp 初学数据Lv2

发表于2021-1-30 14:54

只看该作者

取消 关注该作者的回复

8#

zm1997 发表于 2021-1-30 14:24
checkBtnAndBindTab(["@gfs","@gd","@zj","@fgl","@ddyc"],"HHH87");
checkBtnAndBindTab(["@tq","@xl"]," ...

代码贴出来看看呢

zm1997 数据达人Lv4

发表于2021-1-30 15:47

只看该作者

取消 关注该作者的回复

9#

xuxp 发表于 2021-1-30 14:54
代码贴出来看看呢

/***
*按钮必须使用同一个分组名
**/
function checkBtnAndBindTab(btns, tabctrlId) {
        var ready = true;
        var btnDoms = [];
        if(!g_rptpage.calcParam){
                ready = false;
        }else{
                for (var i = 0, l = btns.length; i < l; i++) {
                        var param = g_rptpage.calcParam.getParamByName(btns);
                        if(!param){
                                ready = false;
                                break;
                        }
                        btnDoms.push(param.getBaseDom());
                }
        }
        if(!ready){
                var func = checkBtnAndBindTab.bind(window,btns,tabctrlId);
                setTimeout(func,50);
        }else{
                window["current_active_btn_idx"] = 0;
                var bindTabClick = function(tabctrlId,idx){
                        window["current_active_btn_idx"] = idx;
                         $(btnDoms[idx].firstChild).click();
                        g_rptpage.widgets[tabctrlId].setActive(idx);
                };
                var bindTabHover = function(tabCtrlId,idx){
                        stopAutoCheckBtn();
                        $(btnDoms[idx].firstChild).click();
                        EUI.execDomEvent(btnDoms[idx],"click");
                };
                var autoCheckBtn = function(){
                        var nextidx = (window["current_active_btn_idx"]+1)%btnDoms.length;
                         $(btnDoms[nextidx].firstChild).click();
                        EUI.execDomEvent(btnDoms[nextidx],"click");
                        window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
                };
                var stopAutoCheckBtn = function(){
                        if(window["_auto_check_btn_timer"]){
                                clearTimeout(window["_auto_check_btn_timer"]);
                                window["_auto_check_btn_timer"] = null;
                        }
                };
                var startAutoCheckBtn = function(){
                        window["_auto_check_btn_timer"]= setTimeout(autoCheckBtn,2000);
                };

                for(var i=0,l=btnDoms.length;i<l;i++){
                        EUI.addEvent(btnDoms,"click",bindTabClick.bind(btnDoms,tabctrlId,i));
                        jQuery(btnDoms).hover(bindTabHover.bind(btnDoms,tabctrlId,i),startAutoCheckBtn);
                }
                startAutoCheckBtn();
        }
}


checkBtnAndBindTab(["@gfs","@gd","@zj","@fgl","@ddyc"],"HHH87");
checkBtnAndBindTab(["@tq","@xl"],"HHH488");

xuxp 初学数据Lv2

发表于2021-1-30 16:19

只看该作者

取消 关注该作者的回复

10#

zm1997 发表于 2021-1-30 15:47
/***
*按钮必须使用同一个分组名
**/

前面的脚本也复制一遍,不止复制最后一句,这样试下。

zm1997 数据达人Lv4

发表于2021-2-1 09:49

只看该作者

取消 关注该作者的回复

11#

xuxp 发表于 2021-1-30 16:19
前面的脚本也复制一遍,不止复制最后一句,这样试下。

这份就是我现在用的脚本,可以看看是哪里出了问题。导致运行的时候两个tab页动也不会动

上一页12下一页共2页

登录后可回答问题,请登录注册

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流