操作员在切换tab的时候,经常误操作,造成tab被关闭,而且无法恢复,先前所做的操作就丢失了。
解决方案是增加个关闭确认,就研究了下TabPanel的事件,用到得事件是beforeclose,在产生这个事件的时候就是操作确认的切入点。
Ext.MessageBox.show。
关键代码很简单,主要原理就是在一个tab签上增加一个listeners,监听触发的事件,匹配事件的名字,如果是“beforeclose”,则执Ext.MessageBox.show弹出一个提问窗口,询问是否确认关闭tab。
需要注意的是:Ext.MessageBox.show发生后,并不会像window.confirm那样阻止程序运行,所以会继续执行下面的代码。
所以,为避免这种情况,调用Ext.MessageBox.show方法后,Ext的MessageBox弹出来了,但程序会继续,执行到return false,这会使该tab的close事件不被触发而不被关闭,实现tab的暂时不关闭。
当用户点击询问窗口的“否”按钮时,不用进行任何操作就行了,因为close事件已经不可能触发了;
当用户点击询问窗口的“是”按钮时,重新调用tabs的remove方法,实现关闭tab。
<script language="JavaScript">
var tabs;
Ext.onReady(function(){
tabs = new Ext.TabPanel({
renderTo: '#contentPanel',
resizeTabs:false,
minTabWidth: 115,
tabWidth:235,
activeItem:0,
enableTabScroll:true,
width:600,
height:250,
border:true,
defaults: {autoScroll:true},
items:[{
title:'起始页',
closable:false,
html:'<b>haha</b>'
},{
autoWidth:true,
title: '管理项1',
id: 'tab-1',
html: "窗口内容1",
closable: true,
listeners: {
'beforeclose':conrirmTab
}
},{
autoWidth:true,
title: '管理项2',
id: 'tab-2',
html: "窗口内容2",
closable: true,
listeners: {
'beforeclose': conrirmTab
}
}]
});
});
function conrirmTab(e) {
Ext.MessageBox.show({
title:'操作确认',
msg:'您确定要退出 <b>'+e.title+'</b> 么?',
buttons:Ext.MessageBox.YESNO,
icon:Ext.MessageBox.QUESTION,
fn:function(btn, text) {
if(btn=='yes') {
tabs.remove(e);
}
}
});
return false;
}
</script>
分享到:
相关推荐
### ExtJS 4.2.1 TabPanel 刷新与关闭标签功能详解 #### TabPanel 组件简介 在ExtJS框架中,`TabPanel`组件是一个非常实用且强大的UI控件,它允许用户在一个界面上组织多个相关的视图或面板,并通过标签页的形式...
Extjs4.2 设置tabpanel当前活动页签的样式 Extjs是一个流行的JavaScript框架,用于构建丰富互联网应用程序(RIA)。其中,tabpanel是Extjs中一个常用的控件,用于显示多个面板。设置tabpanel当前活动页签的样式是...
ExtJS的TabPanel是其组件库中的一个核心组件,用于创建具有多个标签页的应用界面,每个标签页可以承载不同的内容。在本主题中,我们将深入探讨如何操作ExtJS的TabPanel,包括创建、添加、删除和切换标签页,以及...
`tabPanel` 支持多种事件,如 `tabchange` 事件,当用户切换标签页时触发。你可以通过 `addListener` 或 `on` 方法来监听这些事件: ```javascript tabPanel.on('tabchange', function(tabPanel, newTab) { ...
嵌套显示选项卡时,会出现重复边框的情况,影响美观,将border设置为”none”,则可以避免,默认显示边框,不接受除”none”之外的参数值。 active<number> 渲染后默认激活哪个选项卡元素 下标以0为开始,默认为0。...
extjs动态添加tabpanel标签页支持pannel嵌入 逻辑代码在 MyWindow.js里面直接调用 方法 就可以
EXTJS4.2官网上的tabpanel的右键关闭当前页,关闭其它,关闭全部有一点小BUG。 修改TabCloseMenu.js文件的一下函数。 压缩文件里面就是修改过后的TabCloseMenu.js文件,只要替换当前4.2的那个文件就可以使用了!
### Extjs4.2 根据不同的数值设置 TabPanel 行的背景颜色 #### 一、引言 在Web应用程序开发中,为了提高用户体验并使数据呈现更加直观易懂,开发者常常需要根据数据的不同状态来调整UI元素的样式。例如,在使用...
当用户尝试关闭TabPanel中的某个Panel时,我们可能需要执行一些验证或确认操作,例如弹出对话框询问用户是否真的要关闭当前页面。在这样的需求下,可以利用TabPanel的`beforeremove`事件和Panel的`beforeclose`事件...
本篇文章将深入探讨如何在EXT JS的`TabPanel`中实现动态页面加载,这在构建可扩展且高效的Web应用时非常关键。通过动态加载,我们可以避免一次性加载所有标签页内容,从而改善用户体验,减少初次加载时的网络负担。 ...
在“ExtJS扩展:垂直页签tabPanel”这个主题中,我们将探讨如何在ExtJS中实现一个创新的垂直布局的页签(tab)组件,这在很多情况下可以提供更好的用户界面体验。 首先,我们看到有两个JavaScript文件,TabPanel.js...
当tabpanel的`items`配置包含`xtype`时,EXTJS会在需要时动态创建对应的组件。 ```javascript var tabsConfig = [ { xtype: 'myDynamicPanel', title: '动态Panel' }, { xtype: 'myHtmlPanel', title: '动态...
EXTJS的tabpanel是其组件库中的一个重要组成部分,用于创建具有多个选项卡的用户界面,每个选项卡代表一个独立的视图或工作区。在EXTJS应用中,tabpanel提供了灵活的布局管理和用户交互功能,使开发者能够构建高效且...
在本文中,我们将深入探讨ExtJS中的`Ext.TabPanel`组件,它是创建多标签界面的核心元素。`Ext.TabPanel`允许开发者在单个容器中组织多个面板或视图,每个面板都有自己的标题,并且可以通过标签页进行切换。让我们...
在ExtJs中,GridPanel是用于展示数据的常用组件,它可以提供丰富的功能,如排序、分页、筛选等。在实际应用中,我们经常需要监听用户的交互行为,比如双击行进行进一步的操作。本篇文章将深入讲解如何在ExtJs ...
### Ext中的tabpanel关闭后再打开不显示的问题 在Ext框架中,`TabPanel`是一个非常重要的组件,用于实现页面中的多标签页功能。然而,在实际应用过程中可能会遇到一个常见问题:当某个标签页被关闭后,如果尝试重新...
### 关于ExtJS中TabPanel关闭后的内存释放详解 在前端开发领域,特别是在使用ExtJS框架构建复杂Web应用时,内存管理是一个不容忽视的关键环节。本文将深入探讨ExtJS中TabPanel组件在关闭后如何有效地释放内存,以及...
在EXTJS中,`tabpanel` 是一个非常常用的组件,它用于展示多个页面或者视图,每个页面或视图被封装在一个选项卡中。在某些情况下,我们可能需要限制`tabpanel`中同时显示的选项卡数量,以保持界面的简洁性和易用性。...
var confirm = Ext.Msg.confirm('确认', '确定要关闭此选项卡吗?', this.onCloseConfirm, this); e.stopEvent(); // 阻止默认的选项卡激活行为 }, onCloseConfirm: function(buttonId) { if (buttonId === '...
ExtJS3 升级到 ExtJS4 方案 ExtJS3 升级到 ExtJS4 需要修改大量代码,主要是因为 ExtJS4 配备了一类新的系统,不向后兼容。在 ExtJS 3 里生成表的几个框架组件,ExtJS4 大多生成 div,这使得 CSS classes 将会失败...