EXT窗口Window及对话框MessageBox


Posted in Javascript onJanuary 27, 2011

看下面的代码:

var i=0; 
function newWin(){ 
var win = new Ext.Window({ 
title:"窗口"+i++, 
width:400, 
height:300, 
maximizable:true 
}); 
win.show(); 
} 
Ext.onReady( 
function(){ 
Ext.get("btn").on("click",newWin); 
} 
);

页面中的html内容:

执行上面的代码,当点击按钮“新窗口”的时候,会在页面中显示一个窗口,窗口标题为“窗口x”,窗口可以关闭,可以最大化,点击最大化按钮会最大化窗口,最大化的窗口可以还原,如图xxx所示。
EXT窗口Window及对话框MessageBox
窗口分组

窗口是分组进行管理的,可以对一组窗口进行操作,默认情况下的窗口都在默认的组 Ext.WindowMgr中。窗口分组由类Ext.WindowGroup定义,该类包括bringToFront、getActive、 hideAll、sendToBack等方法用来对分组中的窗口进行操作。

看下面的代码:

var i=0,mygroup; 
function newWin(){ 
var win=new Ext.Window({ 
title:"窗口"+i++, 
width:400, 
height:300, 
maximizable:true, 
manager:mygroup 
}); 
win.show(); 
} 
function toBack(){ 
mygroup.sendToBack(mygroup.getActive()); 
} 
function hideAll(){ 
mygroup.hideAll(); 
} 
Ext.oReay( 
function(){ 
mygroup=new Ext.WindowGroup(); 
Ext.get("btn").on("click",newWin); 
Ext.get("btnToBack").on("click",toBack); 
Ext.get("btnHide").on("click",hideAll); 
} 
);

页面中的html代码

执行上面的代码,先点击几次“新窗口”按钮,可以在页面中显示几个容器,然后拖动这些窗口,让他们在屏幕中不同的位置。然后点“放到后台”按钮,可以实现把最前面的窗口移动该组窗口的最后面去,点击“隐藏所有”按钮,可以隐藏当前打开的所有窗口。如下图所示:
EXT窗口Window及对话框MessageBox
对话框

由于传统使用alert、confirm等方法产生的对话框非常古板,不好看。因此,ExtJS提供了一套非常漂亮的对话框,可以使用这些对话框代替传统的alert、confirm等,实现华丽的应用程序界面。
Ext的对话框都封装在Ext.MessageBox类,该类还有一个简写形式即Ext.Msg,可以直接通过Ext.MessageBox或Ext.Msg来直接调用相应的对话框方法来显示Ext对话框。看下面的代码:

Ext.onReady( 
function(){ 
Ext.get("btnAlert").on( 
"click", 
function(){ 
Ext.MessageBox.alert("请注意","这是ExtJS的提示框"); 
} 
); 
} 
);

Html页面中的内容:

执行程序,点击上面的“alert框”按钮,将会在页面上显示如下图所示的对话框。
EXT窗口Window及对话框MessageBox
除了alert以外,Ext还包含confirm、prompt、progress、wait等对话框,另外我们可以根据需要显示自下定义的对话框。普通对话框一般包括四个参数,比如confirm的方法签名为confirm ( String title, String msg, [Function fn], [Object scope] ) ,参数title表示对话框的标题,参数msg表示对话框中的提示信息,这两个参数是必须的;可选的参数fn表示当关闭对话框后执行的回调函数,参数 scope表示回调函数的执行作用域。回调函数可以包含两个参数,即button与text,button表示点击的按钮,text表示对话框中有活动输入选项时输入的文本内容。我们可以在回调函数中通过button参数来判断用户作了什么什么选择,可以通过text来读取在对话框中输入的内容。看下面的例子:

Ext.onReady( 
function(){ 
Ext.get("btn").on( 
"click", 
function(){ 
Ext.MessageBox.confirm( 
"请确认","是否真的要删除指定的内容", 
function(button,text){ 
alert(button); 
alert(text); 
} 
); 
} 
); 
} 
);

Html内容:

点击对话框按钮将会出现下面的对话框,然后选择yes或no则会用传统的提示框输出回调函数中button及text参数的内容。
EXT窗口Window及对话框MessageBox
因此,在实际的应用中,上面的代码可以改成如下的内容:

Ext.onReady( 
function(){ 
Ext.get("btnAlert").on( 
"click", 
function(){ 
Ext.MessageBox.confirm( 
"请确认", 
"是否真的要删除指定的内容", 
function(button,text){ 
if(button=="yes"){ 
//执行删除操作 
alert("成功删除"); 
} 
} 
); 
} 
); 
} 
);

这样当用户点击对话框中的yes按钮时,就会执行相应的操作,而选择no则忽略操作。

下面再看看prompt框,我们看下面的代码:

Ext.onReady( 
function(){ 
Ext.get("btn").on( 
"click", 
function(){ 
Ext.MessageBox.prompt( 
"输入提示框", 
"请输入你的新年愿望:", 
function(button,text){ 
if(button=="ok"){ 
alert("你的新年愿望是:"+text); 
} 
else 
alert("你放弃了录入!"); 
} 
); 
} 
); 
} 
);

Html页面:

点击上面的“对话框”按钮可以显示如下图所示的内容,如果点击OK按钮则会输入你输入的文本内容,选择cancel按钮则会提示放弃了录入,如下图所示:
EXT窗口Window及对话框MessageBox EXT窗口Window及对话框MessageBox
在实际应用中,可以直接使用MessageBox的show方法来显示自定义的对话框,如下面的代码:

function save(button){ 
if(button=="yes"){ 
//执行数据保存操作 
} 
else if(button=="no"){ 
//不保存数据 
} 
else{ 
//取消当前操作 
} 
} 
Ext.onReady( 
function(){ 
Ext.get("btn").on( 
"click", 
function(){ 
Ext.Msg.show({ 
title:'保存数据', 
msg: '你已经作了一些数据操作,是否要保存当前内容的修改?', 
buttons: Ext.Msg.YESNOCANCEL, 
fn: save, 
icon: Ext.MessageBox.QUESTION 
}); 
} 
); 
} 
);

点击“对话框”按钮可显示一个自定义的保存数据对话框,对话框中包含yes、no、cancel三个按钮,可以在回调函数save中根据点击的按钮执行相应的操作,如图xx所示。
EXT窗口Window及对话框MessageBox

Javascript 相关文章推荐
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
Feb 26 Javascript
javascript实现信息的显示和隐藏如注册页面
Dec 03 Javascript
jquery取子节点及当前节点属性值的方法
Sep 09 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
Jun 22 Javascript
详谈javascript精度问题与调整
Jul 08 Javascript
webpack实现热更新(实施同步刷新)
Jul 28 Javascript
详解webpack-dev-server使用方法
Sep 14 Javascript
js正则匹配多个全部数据问题
Dec 20 Javascript
js实现聊天对话框
Feb 08 Javascript
js实现无限层级树形数据结构(创新算法)
Feb 27 Javascript
vue+iview实现文件上传
Nov 17 Vue.js
vue3不同环境下实现配置代理
May 25 Vue.js
基于jquery的表头固定的若干方法
Jan 27 #Javascript
jquery animate图片模向滑动示例代码
Jan 26 #Javascript
jQuery 幻灯片插件(带缩略图功能)
Jan 24 #Javascript
jquery lazyload延迟加载技术的实现原理分析
Jan 24 #Javascript
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 #Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
Jan 24 #Javascript
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 #Javascript
You might like
玛琪朵 Macchiato
2021/03/03 咖啡文化
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
php时间戳转换代码详解
2019/08/04 PHP
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
jQuery 常用代码集锦(必看篇)
2016/05/16 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
JS判断两个对象内容是否相等的方法示例
2017/04/10 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
Python sklearn KFold 生成交叉验证数据集的方法
2018/12/11 Python
Python循环结构的应用场景详解
2019/07/11 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
人事部主管岗位职责
2013/12/26 职场文书
自我鉴定怎么写
2014/01/12 职场文书
2014年学生会部门工作总结
2014/11/07 职场文书
技术支持岗位职责
2015/02/13 职场文书
团委工作总结2015
2015/04/02 职场文书
交通安全主题班会
2015/08/12 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书
MongoDB支持的索引类型
2022/04/11 MongoDB
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers