解决Easyui Tab href 加载对话框中form重复提交问题

原因分析:

     只要是对话框,或者Window,Easyui都会将其放到body下,tab控件通过href加载对话框后,对话框也会放到body下,当tab被关闭时,处于body下的对话框不会被销毁,再次打开时就会重复加载,从而form会重复提交。


    临时解决方法是,先记录下href加载了哪些对话框,在tab被关闭时,去destroy那些对话框。


$('#tabs').tabs('add', {
                                    id: node.id,
                                    title : node.text,
                                    href : '/core/showPage.php?page=' + node.href,
                                    selected : true,
                                    iconCls : node.iconCls,
                                    closable : true,
                                    onLoad: function(){
                                        var pageID = 'hxPageID' + this.id, body = $('body');
                                        body.find('div.panel.window>div.panel-body.panel-body-noborder.window-body').filter(function() {
                                            return ( ! $(this).hasClass('hxAutoDlg'));
                                        }).addClass( 'hxAutoDlg ' + pageID );
                                        body.find('input.combo-f').filter(function(){
                                            return ( ! $(this).hasClass('hxAutoComb'));
                                        }).addClass('hxAutoComb ' + pageID );
                                        body.find('input.searchbox-f').filter(function(){
                                            return ( ! $(this).hasClass('hxASearchBox'));
                                        }).addClass('hxASearchBox ' + pageID );
                                        body.find('input.textbox-f').filter(function(){
                                            var _this = $(this);
                                            return ( ! ( _this.hasClass('hxAutoComb') || _this.hasClass('hxASearchBox') || _this.hasClass('hxADText')));
                                        }).addClass('hxADText ' + pageID );
                                        body.find('a.m-btn:has(span>span.m-btn-downarrow)').filter(function(){
                                            return ( ! $(this).hasClass('hxABtmenu'));
                                        }).addClass('hxABtmenu ' + pageID );
                                    },
                                    onBeforeDestroy: function() {
                                        var pageID = 'hxPageID' + this.id, body = $('body');
                                        body.find('a.hxABtmenu.' + pageID ).each(function(){
                                            var _this = $(this);
                                            if( _this.hasClass('s-btn'))
                                                _this.splitbutton('destroy');
                                            else
                                                _this.menubutton('destroy');
                                        });
                                        body.find('input.hxADText.' + pageID ).each( function(){
                                            var _this = $(this);
                                            if( _this.hasClass('numberspinner-f'))
                                                _this.numberspinner('destroy');
                                            else if( _this.hasClass('numberbox-f'))
                                                _this.numberbox('destroy');
                                            else
                                                _this.textbox('destroy');
                                        });
                                        body.find('input.hxASearchBox.' + pageID ).each( function(){
                                            $(this).searchbox('destroy');
                                        });
                                        body.find('input.hxAutoComb.' + pageID ).each(function(){
                                            var _this = $(this);
                                            if( _this.hasClass('combogrid-f'))
                                                _this.combogrid('destroy');
                                            else if( _this.hasClass('combotree-f'))
                                                _this.combotree('destroy');
                                            else if( _this.hasClass('datebox-f'))
                                                _this.datebox('destroy');
                                            else
                                                _this.combobox('destroy');
                                        });
                                        body.find('.hxAutoDlg.' + pageID ).each(function(){
                                            $(this).dialog('destroy');
                                        });
                                    }
                                });


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

示申○言舌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值