--wayfoon
开发中,通常需要新建窗口,比如登陆窗口,新增窗口。
新建窗口使用到Ext.Window提供的类,
你可以先预览效果:效果图
建立一个简单的窗口:
- var win=new Ext.Window({
- id:'w',
- title:'wayfoon:新窗口',//窗口显示名称
- width:300,
- height:140,
- collapsible: true,//是否可折叠
- layout : 'column',//布局方式
- items:[]//窗口需要增加的内容
- }).show();//让窗口显示出来
上面只定义了窗口的名称、长、宽、布局方式,其他属性之后详细描述。你可以在items里面增加你需要的内容。
比如你可以直接在items里面添加html代码:
- items:[{
- xtype : 'panel',//html代码容器
- html : "姓名:<input type='text' name='wayfoon' onclick='javascript:alert(wayfoon)'/>"
- }]
在这里,我将演示添加一个form表单。
先新建一个form。
form由Ext.form.FormPanel定义
一个标准的form定义
- var from =new Ext.form.FormPanel({
- bodyStyle : 'padding-top:5px',//距离窗口上端的距离
- id:'f',
- labelWidth:50,//文本部分的宽度
- labelAlign:'right',//文本的排列方式
- labelPad : 0,//文本和输入框之间的距离
- layout:'form',//布局方式
- frame : true,
- defaults:{//字元素默认的属性
- width:200
- },
- defaultType:'textfield',//默认的input 类型
- items:[{
- id:'workid',
- cls : 'user',
- fieldLabel:'编号',
- //disabled:true,
- allowBlank:false//是否允许为空
- },{
- id:'workname',
- fieldLabel:'名称',
- allowBlank:false
- }],
- buttonAlign:'center',//按钮的排列方式
- buttons:[{//按钮写在窗口,要比写在form里面好看多了
- text:'确定',
- type:'submit',
- handler:function(){//点击触发事件处理
- }
- }]
- //这里不需要逗号,每个控件定义都是这样的
- })
现在可以将form加入到窗口中,items:[form] 就可以!
这样显示的窗口不是很美观,我们可以做些调整。将按钮放到表单之外,也就是放在窗口下面。
这样,修改之后的窗口,
- var win=new Ext.Window({
- id:'w',
- renderTo: bd,
- title:'wayfoon:新窗口',
- width:300,
- height:140,
- collapsible: true,//是否可折叠
- defaults :{
- // 容器内元素是否显示边框
- border : true
- },
- //layout:'fit',
- layout : 'column',//布局方式
- items:[form],//包含表单,多个用逗号隔开
- buttonAlign:'center',//按钮的排列方式
- buttons:[{//按钮写在窗口,要比写在form里面好看多了
- text:'确定',
- type:'submit',
- handler:function(){
- }
- }]
- }).show();
一个新窗口,基本完成!
可以将下面代码保存成*.htm执行。
所有代码:
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <title> wayfoon:新窗口 </title>
- <link rel="stylesheet" type="text/css" href="http://www.bsshenghua.com/ext22/resources/css/ext-all.css" />
- <script type="text/javascript" src="http://www.bsshenghua.com/ext22/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="http://www.bsshenghua.com/ext22/ext-all.js"></script>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
- <body>
- <script>
- Ext.onReady(function(){
- Ext.QuickTips.init();//初始化鼠标停留时的显示框
- Ext.form.Field.prototype.msgTarget = 'side';
- var bd = Ext.getBody();
- var form =new Ext.form.FormPanel({
- bodyStyle : 'padding-top:5px',//距离窗口上端的距离
- id:'ll',
- labelWidth:50,//文本部分的宽度
- labelAlign:'right',//文本的排列方式
- labelPad : 0,//文本和输入框之间的距离
- layout:'form',//布局方式
- frame : true,
- defaults:{//字元素默认的属性
- width:200
- },
- defaultType:'textfield',//默认的input 类型
- items:[{
- id:'workid',
- cls : 'user',
- fieldLabel:'编号',
- //disabled:true,
- allowBlank:false//是否允许为空
- },{
- id:'workname',
- fieldLabel:'名称',
- allowBlank:false
- }]
- })
- var win=new Ext.Window({
- id:'w',
- renderTo: bd,
- title:'wayfoon:新窗口',
- width:300,
- height:140,
- collapsible: true,//是否可折叠
- defaults :{
- // 容器内元素是否显示边框
- border : true
- },
- //layout:'fit',
- layout : 'column',
- items:[form],
- buttonAlign:'center',//按钮的排列方式
- buttons:[{//按钮写在窗口,要比写在form里面好看多了
- text:'确定',
- type:'submit',
- handler:function(){
- }
- }]
- }).show();
- });
- </script>
- </body>
- </html>
效果图:
如果你想在按钮触发时,添加事件
- handler:function(){
- alert(123);
- var workid=Ext.get('workid').dom.value;
- alert(workid);
- }
下面演示一个submit登陆事件,
你也可以单独定义一个方法(调用方法,handler:login):
- // 单击按钮时执行登陆操作
- var login = function(){
- var workid=Ext.get('workid').dom.value;
alert("wayfoon:"+workid); - /**
- 这里可以判断输入的值是否合法,(通过 类似:var workid=Ext.get('workid').dom.value;得到值日)否则不执行下面的submit
- **/
- // 执行当前表单面板的submit
- f.form.submit({
- // 动作发生期间显示的文本信息
- //waitMsg : '正在登录......',
- // submit发生时指向的地址
- url : '/xxx/login.jsp',
- // 表单提交方式
- method : 'POST',
- // 数据验证通过时发生的动作
- success : function(form, action){
- //成功的走向
- window.location.href = 'main.htm?t='+new Date();
- },
- // 反之......
- failure : function(form, action){
- if (action.failureType == Ext.form.Action.SERVER_INVALID)
- Ext.MessageBox.alert('警告', action.result.errors.msg);
- }
- });
- };
login 方法要在调用之前定义好。
完整的代码如下:
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- <html>
- <head>
- <title> wayfoon:新窗口 </title>
- <link rel="stylesheet" type="text/css" href="http://www.bsshenghua.com/ext22/resources/css/ext-all.css" />
- <script type="text/javascript" src="http://www.bsshenghua.com/ext22/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="http://www.bsshenghua.com/ext22/ext-all.js"></script>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
- <body>
- <script>
- Ext.onReady(function(){
- Ext.QuickTips.init();//初始化鼠标停留时的显示框
- Ext.form.Field.prototype.msgTarget = 'side';
- var bd = Ext.getBody();
- var form =new Ext.form.FormPanel({
- bodyStyle : 'padding-top:5px',//距离窗口上端的距离
- id:'ll',
- labelWidth:50,//文本部分的宽度
- labelAlign:'right',//文本的排列方式
- labelPad : 0,//文本和输入框之间的距离
- layout:'form',//布局方式
- frame : true,
- defaults:{//字元素默认的属性
- width:200
- },
- defaultType:'textfield',//默认的input 类型
- items:[{
- id:'workid',
- cls : 'user',
- fieldLabel:'编号',
- //disabled:true,
- allowBlank:false//是否允许为空
- },{
- id:'workname',
- fieldLabel:'名称',
- allowBlank:false
- }]
- })
- // 单击按钮时执行登陆操作
- var login = function(){
- var workid=Ext.get('workid').dom.value;
- alert("wayfoon:"+workid);
- /**
- 这里可以判断输入的值是否合法。否则不执行下面的submit
- **/
- // 执行当前表单面板的submit
- form.form.submit({
- // 动作发生期间显示的文本信息
- waitMsg : '正在登录......',
- // submit发生时指向的地址
- url : '/mktweb/login.jsp',
- // 表单提交方式
- method : 'POST',
- // 数据验证通过时发生的动作
- success : function(form, action){
- //成功走向
- window.location.href = 'main.htm?t='+new Date();
- },
- // 反之......
- failure : function(form, action){
- // reset();
- if (action.failureType == Ext.form.Action.SERVER_INVALID)
- Ext.MessageBox.alert('警告', action.result.errors.msg);
- }
- });
- };
- var win=new Ext.Window({
- id:'w',
- renderTo: bd,
- title:'wayfoon:新窗口',
- width:300,
- height:140,
- collapsible: true,//是否可折叠
- defaults :{
- // 容器内元素是否显示边框
- border : true
- },
- //layout:'fit',
- layout : 'column',
- items:[form],
- buttonAlign:'center',//按钮的排列方式
- buttons:[{//按钮写在窗口,要比写在form里面好看多了
- text:'确定',
- type:'submit',
- handler:login
- }]
- }).show();
- });
- </script>
- </body>
- </html>
预览效果:效果图
wayfoon 2008-08-28