`

form 与column 的布局 ,tabPanel , formPanel ,fitlayout ,表单元素 ,控件校验 表单提交的使用

 
阅读更多

 

 

 

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Checkbox TreePanel</title>
<link rel="stylesheet" type="text/css" href="/ext/docs/resources/ext-all.css" />
<script type="text/javascript" src="/ext/docs/resources/ext-base.js"></script>
<script type="text/javascript" src="/ext/docs/resources/ext-all.js"></script>
 
</head>
<body>

 

<script type="text/javascript">
//1  form 与column 的布局 
//2 tabPanel , formPanel ,fitlayout ,表单元素 ,控件校验    表单提交的使用 

Ext.onReady(function(){
    Ext.QuickTips.init();// 浮动信息提示
    Ext.form.Field.prototype.msgTarget = 'side';// 设置控件的错误信息显示位置,主要可选的位置有:qtip,title,under,side,[elementId]
    
	var formPanel = new Ext.FormPanel({
		renderTo:document.body,
		title:'formPanel',
		frame:true, 			//渲染背景颜色
        labelWidth : 60,    	//显示的标签宽度为45 
        labelAlign : "right", 	//标签内容右对齐
        bodyStyle:'padding:2px 10px 10px 2px', //使内部元素和边框 有一定距离 
        width:600,
        items:[{
        	//总体上 用列布局 
        	layout:'column',
        	border:false,
        	labelSeparator:':',
        	items:[{ //第一行开始 
        		columnWidth:.5, // 该列的宽度占总宽度的50%
        		border:true,
        		layout:'form',//第一列的布局用form ,并且占50%宽度
        		items:[{
        			xtype:'textfield',
        			fieldLabel:'姓名',
        			name:'name',
        			anchor:'80%' //输入框的宽度是总宽度的80%,余下的显示错误信息图标  
        		}]
        	},{
        		columnWidth:.25,//添加2个radio 第一个有标题, 第二个没有标题 ,2个radio宽度和等于余下宽度的50%
        		layout:'form',
        		border:false,
        		items:[{
        			style:'margin-top:5px',	// 单选按钮和lable对齐
        			xtype:'radio',
        			fieldLabel:'性别',		// 单选按钮总的类别
        			name:'sex',
        			checked:true,   		//默认选中这个radio 
        			boxLabel:'男' ,			//单选按钮对应显示的值
        			inputValue:'男Value',
        			anchor:'80%' 			//input 宽度80%
        			
        		}]
        	},{
        		//这个radio 没有标签,需要隐藏所有的标签信息 
        		columnWidth:.25,
        		layout:'form',
        		labelWidth:0,		//标签宽度为0
        		labelSeparator:'', 	//没有分隔符
        		hideLabels : true,	// 隐藏这个radio的标签设置
        		border:false,
        		items:[{
        			style:'margin-top:5px',
        			xtype:'radio',
        			fieldLabel:'',
                    boxLabel : '女',
                    name : 'sex',
                    inputValue : '女',
                    anchor : '80%'
        		}]
        		
        	}]//第一行结束 
        	
        	
        },{
    		layout:'column',
    		border:false,
    		labelSeparator:':',
    		items:[{
    			columnWidth:.5,
    			layout:'form',
    			items:[{
    				xtype:'datefield',
    				fieldLabel:'出生日期',
    				name:'birthday',
    				anchor:'80%'
    			}]
    		},{
    			columnWidth:.5,
    			layout:'form',
    			items:[{
    				xtype:'combo',
    				mode:'local',//数据是本地的		
    				store:new Ext.data.SimpleStore({
    					fields:['returnValue','displayText'],
    					data:[[1,'小学'],[2,'中学'],[3, '高中']]
    				}),
    				valueField:'returnValue',//下拉框传到后台的值
    				displayField:'displayText' ,//下拉框显示的数据 
    				hiddenName : 'education',// 大家要注意的是hiddenName和name属性,name只是下拉列表的名称,作用是可通过,而hiddenName才是提交到后台的input的name。如果没有设置hiddenName,在后台是接收不到数据的,这个大家一定要注意。
    				name: 'education',// 再次提醒,name只是下拉列表的名称
    				forceSelection:true ,    //必须选择一个选项
    				allowBlank : false,// 该选项值不允许为空 ,如果为空则提示 blankText
    				blankText: '请选择学历' , // 提交form时,该项如果没有选择,则提示错误信息"请选择学历"
    				emptyText : '选择学历',// 在没有选择值时显示为“选择学历”
    				
    				editable : false,// 不允许编辑 
    				triggerAction : 'all',// 因为这个下拉是只能选择的,所以一定要设置属性triggerAction为all,不然当你选择了某个选项后,你的下拉将只会出现匹配选项值文本的选择项,其它选择项是不会再显示了,这样你就不能更改其它选项了。
    				 fieldLabel : '学历',	// 控件的标题是学历
    				anchor:'80%'
    			}]
    			
    		}]//第二行结束
    		
    	},{
			//第三行开始i
    		layout:'column',
    		border:false,
    		labelSeparator:':',
    		items:[{
    			columnWidth:.35,
    			layout:'form',
    			border:false,
    			items:[{
    				xtype:'checkbox',
        			fieldLabel:'权限',
        			boxLabel:'系统管理员',
        			name:'manager',
        			inputValue:'1',
        			anchor:'80'
    			}]
    		},{
    			columnWidth:.2,
    			layout:'form',
                labelWidth : 0,
                labelSeparator : '',
                hideLabels : true,
                items:[{
                	xtype:'checkbox',
                	fieldLabel:'',
                	name:'manager',
                	boxLabel:'管理员',
                	inputValue:'2',
                	anchor:'80'
                }]
    		},{
    			columnWidth:.2,
    			layout:'form',
                labelWidth : 0,
                labelSeparator : '',
                hideLabels : true,
                items:[{
                	xtype:'checkbox',
                	fieldLabel:'',
                	boxLabel:'普通用户',
                	name:'manager',
                	inputValue:'3',
                	anchor:'80%'
                }]
    			
    		}]//第三行结束
			
		},{
			  //第四行开始
	          layout : 'column',
              border : false,
              labelSeparator : ':',
              items:[{
                  columnWidth : .5,
                  layout : 'form',
                  border : false,
                  items : [{
                      xtype : 'textfield',
                      fieldLabel : '电子邮件',
                      name : 'email',
                      vtype : 'email',// 这里的定义和普通的文本输入框没什么区别,只是多了一个vtypes的属性定义。Vtypes里总共定义了email、url、alpha和alphanum四种类型数据格式,email和url这个不用介绍了,呵呵。alpha是字母和下划线的组合,alphanum是字母、下划线和数字的组合。
                      allowBlank : false,
                      anchor : '80%'

               		}]
              }, {
                  columnWidth : .5,
                  layout : 'form',
                  border : false,
                  items : [{
                           xtype : 'textfield',
                           fieldLabel : '个人主页',
                           name : 'url',
                           vtype : 'url', //验证信息 
                           anchor : '80%'
                  }]

           }] 
			//第四行 结束 
		},{
			//第五行 开始
			  xtype:'tabpanel',
			  plain:true,// 将标签页头的背景设置为透明的
              border : false,
              activeTab : 0,
              height : 235,// 高度设置为235px,
              bodyStyle : 'padding:10px',
              items:[{
            	  //第一个tab
            	  title:'登陆',
            	  layout:'form',
            	  defaults:{
            		  width:230
            	  },
            	  defaultType:'textfield',
            	  items:[{
                      fieldLabel : '登录名',
                      name : 'loginID',
                      allowBlank : false,
                      vtype : 'alphanum', //校验 字符与数字混合 
                      allowBlank : false
            	  },{
                      inputType : 'password',// 密码输入框需要定义input控件的类型为password
                      fieldLabel : '密码',
                      name : 'password',
                      allowBlank : false
               		}]
              },{
            	  //第二个tab
            	  title:'数字时间字母',
            	  layout:'form',
            	  defaults:{
            		  width:230
            	  },
            	  defaultType:'textfield',
                  items : [{
                      xtype : 'numberfield',// 只能输入数字的输入控件
                      fieldLabel : '数字',
                      name : 'number'
		               	},{
		                      xtype : 'timefield',// 时间输入控件
		                      fieldLabel : '时间',
		                      name : 'time'
		               },{
		                      fieldLabel : '纯字母',
		                      name : 'char',
		                      vtype : 'alpha'
		              }]
	           },{
	                  title : '文本区域',
	                  layout : 'fit',// 为了让textarea自适应面板容器,使用了fitlayout作为它的布局
	                  items : {
	                         xtype : 'textarea',// 设置类型为textarea
	                         id : 'area',
	                         fieldLabel : ''
	                  }
	
	           }]
	             //第五行结束 
		}],
		buttons:[{
			text:'保存',
			handler:function(){
				 // 在formpanel类中,form属性指向的是formpanle里的basicform对象,可以通过formpanle.form 来使用该basicform对象
 				 // 保存按钮要做的就是先做basicform的客户端验证,验证通过了则设置该按钮状态为disable,防止2次提交。然后调用formpanle.form.doAction方法提交数据
				 if(formPanel.form.isValid()){
					 this.disabled = true;
					   // doAction方法的第一个参数“submit”的意思是表示执行的是提交操作,提交的后台页面是test.jsp(url:'test.asp'),
                                           //提交方式是post(method:'post'),没有其它提交参数(params:'')
					  formPanel.form.doAction('submit', {
                          url : 'resForm.jsp',
                          method : 'post',
                          params : '',
                          // 提交成功后执行success定义的函数,后台返回的数据格式是需要我们注意的,一定要json格式,而且必须包含“success:true”,不然不会执行success定义的函数。
                          // success定义的函数返回两个参数,第一是form本身,第二个是ajax返回的响应结果,在action.result这个json数组了保存了后台返回的数据。
                          success : function(form, action) {
                                 // 例如返回的json结构是"{success:true,data:'成功保存!'}",
                                 Ext.Msg.alert('操作',  action.result.data);
                                 this.disabled = false;
                          },
                          // 定义failure函数,就是网络通讯存在问题的时候将显示错误信息。
                          failure : function() {
                                 Ext.Msg.alert('操作', '保存失败!');
                                 this.disabled = false;
                          }

                   });   
				 }
			}
		},{

            // 取消按钮就是简单的reset一下form的控件
            text : '取消',
            handler : function() {
            	formPanel.form.reset();
            }
     }]
	});
 
});

</script>
</html>

 

分享到:
评论

相关推荐

    Asp.net Accordion、DragPanel、Rating、 TabPanel Ajax控件的使用

    本文将详细介绍Ajax控件中的Accordion、DragPanel、Rating和TabPanel这四个常用控件的使用方法。 1. **Accordion**: Accordion控件允许在一个区域内以折叠面板的形式展示多个部分的内容,用户可以逐个展开或关闭...

    再探Ext中TreePanel控件和TabPanel控件搭配测试

    将TreePanel与TabPanel结合使用,可以创建出更为复杂且交互性强的用户界面。例如,我们可以在每个TabPanel的标签页中放置一个TreePanel,以呈现不同分类的树状数据。当用户点击TreePanel中的节点时,可以触发事件,...

    ExtAspNet控件使用项目

    Form控件则用于创建复杂的Web表单,支持各种输入类型、验证规则和提交处理。在源码中,你可以学习如何设置表单字段、定义验证规则,以及如何处理表单提交后的服务器端逻辑。这对于构建用户交互性强的页面至关重要。 ...

    如何在MATLAB中做出标签页的效果-tabpanel2.6.zip

    使用方法是这样:首先建立一个figure,并在其中加入一个Text控件,需要注意的是这个text控件所在的位置就是将来标签页所在的位置,然后将附件中的tabpanel2.6中的文件放到figure同目录下,然后在命令行输入 ...

    ExtJS之布局详解

    - **表单布局(FormLayout)**:使用`layout: "form"`,专为管理表单字段设计,确保输入字段在表单中正确对齐。 - **表格布局(TableLayout)**:用`layout: "table"`,模拟HTML表格结构,允许设置列数、跨行和跨...

    CVI 8.0 TAB控件的使用

    CVI 8.0 中的 TAB 控件的使用需要注意序号是基于 0 的,属性设置需要把 TAB 控件作为其主页面的控件使用,对每个 TAB 分页里的控件进行操作或属性设置需要使用 GetPanelHandleFromTabPage 函数获得面板的句柄,并...

    TabPanel布局

    此外,例子中还展示了如何创建和添加TreeNode到TreePanel,虽然这部分内容并非直接与TabPanel布局相关,但它是ExtJS中构建树形结构数据的常见操作。 总的来说,这个例子演示了如何使用ExtJS创建一个复杂的多区域...

    treepanel 和 tabpanel 完整

    将`TreePanel`与`TabPanel`结合使用,可以实现以下功能: 1. **导航菜单**:`TreePanel`可以作为导航菜单,每个节点对应一个`TabPanel`的标签页,用户点击节点时,切换到相应的标签页内容。 2. **内容分组**:每个`...

    Tab控件(类型于AJAX里的TAB控件)

    Tab控件是网页设计中常用的一种用户界面元素,它的功能是将不同的内容组织在不同的标签页下,使得用户可以通过点击不同的标签来切换显示的内容。在AJAX(Asynchronous JavaScript and XML)技术出现后,Tab控件得到...

    Extjs4.2 设置tabpanel当前活动页签的样式

    需要注意的是,Extjs提供了多种方式来设置tabpanel的样式,例如可以使用Extjs的主题机制来设置tabpanel的样式,也可以使用CSS样式表来设置tabpanel的样式。不同的方法都有其优缺,开发者可以根据实际需求选择合适的...

    EXT中文手册 Grid Form

    表单体是表单的基本组成部分,包含了各种输入控件。 **创建表单字段** 可以通过`Ext.form.Field`类创建各种类型的表单字段,如文本框、下拉列表等。 **完成表单** 将创建好的表单字段组合在一起,形成完整的表单...

    ExtJs使用过程中积攒的一些东西

    - 表单控件:FormPanel可以包含各种表单元素,如文本框`textfield`、密码框`passwordfield`、选择框`checkbox`、复选框组`checkboxgroup`、单选框`radiogroup`、下拉框`combobox`、日期选择器`datefield`等。...

    EXT 布局 Layout 资料

    - **Form 布局**:适用于表单,它使子元素以标签/字段的形式进行布局。 - **Card 布局**:常用于 TabPanel,只显示当前选中的子元素。 - **Table 布局**:用于表格布局,支持行列布局。 每种布局都有其特定的应用...

    ExtJs + api + 笔记 + 完整包

    "28-表单FormPanel控件的使用.doc"讲述了ExtJs中的表单组件,包括创建表单、添加字段、验证用户输入以及提交数据等操作。表单组件在数据收集和用户交互中扮演着重要角色。 最后,"ext-3.4.1"可能是一个包含ExtJs...

    TabPanel选卡结合右键菜单实例

    在"TabPanel选卡结合右键菜单实例"中,我们关注的是如何将TabPanel与右键菜单功能结合起来。右键菜单是用户交互的一种扩展形式,当用户在特定元素上点击鼠标右键时,会弹出一个包含多种操作选项的菜单,这种设计可以...

    TabPanel 选项卡

    【标题】"TabPanel 选项卡"是一种常见的网页设计元素,用于组织和展示多个相互关联的内容区域。在网页设计中,TabPanel 提供了一种整洁、高效的方式,让用户通过点击不同的标签来切换显示不同的信息板块,提高用户...

    用coolite布局,数据库绑定Treepanel,用Tabpanel显示

    在本文中,我们将深入探讨如何使用Coolite布局技术,结合数据库数据绑定到TreePanel,并利用TabPanel进行动态展示。Coolite是一种强大的前端开发框架,它提供了丰富的组件和灵活的布局方式,使得创建复杂的Web应用...

    extjs4.2.1 tabPanel刷新及关闭标签

    ### ExtJS 4.2.1 TabPanel 刷新与关闭标签功能详解 #### TabPanel 组件简介 在ExtJS框架中,`TabPanel`组件是一个非常实用且强大的UI控件,它允许用户在一个界面上组织多个相关的视图或面板,并通过标签页的形式...

    TabPanel 加载页面

    6. **工具应用**:标签还提到了“工具”,这可能是指使用某些开发工具或库来辅助`TabPanel`的开发,比如使用IDE的插件进行布局设计,或者使用jQuery、Bootstrap等库来快速构建`TabPanel`。 7. **可访问性和响应式...

Global site tag (gtag.js) - Google Analytics