2009-05-20 10:37
310人阅读
收藏
举报
--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'',
- items:[{
- id:''workid'',
- cls : ''user'',
- fieldLabel:''编号'',
-
- allowBlank:false
- },{
- id:''workname'',
- fieldLabel:''名称'',
- allowBlank:false
- }],
- buttonAlign:''center'',
- buttons:[{
- 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 : ''column'',
- items:[form],
- buttonAlign:''center'',
- buttons:[{
- 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./ext22/resources/css/ext-all.css" />
- <script type="text/javascript" src="http://www./ext22/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="http://www./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);
-
-
-
-
- f.form.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./ext22/resources/css/ext-all.css" />
- <script type="text/javascript" src="http://www./ext22/adapter/ext/ext-base.js"></script>
- <script type="text/javascript" src="http://www./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>
|