extjs表单

支持:按键监听,检验,错误信息,输入约束都在配置项中支持

核心组件:

Ext.form.FormPanel:面板

Ext.form.Field:与用户交互,类似于INPUT

Ext.onReady(function(){  
  		var movie_form  =  new  Ext.FormPanel({  
   			url: 'movie ‐form ‐submit.php', 
   			renderTo:  document.body,  
   			frame:  true,  
   			title:  'Movie  Information  Form',  
   			width: 250,  
   			items:   [{  
			    xtype:  'textfield', 
			    fieldLabel: 'Title',  
			    name:   'title' 
			 },{  
			    xtype:  'textfield', 
			    fieldLabel: 'Director', 
			    name:   'director'  
			 },{  
			    xtype:  'datefield',  
			    fieldLabel: 'Released',  
			    name:   'released'  
			}]  
	  });  
	}); 	 

表单字段:

类型:textfield,timefield,numberfield,datefield,combo,textarea,htmleditor,checkbox

校验:

{  
  xtype:  'datefield',  
  fieldLabel: 'Released',  
  name:   'released', 
  disabledDays:  [1,2,3,4,5] 
}  

{  
  xtype:  'textfield', 
  fieldLabel: 'Title',  
  name:   'title',  
  allowBlank:  false  
}  
内置校验--vtype:他的基础是正则表达式

email,url,alpha,alphanum

自定义vtype:值,掩码,错误信息

xxxVal:用来匹配正则表达式

xxxMask:用来约束用户输入的掩码(让字段只接受特定的按键)

xxxText:用来显示错误信息

//vtype
		Ext.form.VTypes['nameVal'] =  /^[A ‐Z][A ‐ Za ‐z\ ‐]+[A ‐Z][A ‐Za ‐z\ ‐]+$/;  
        Ext.form.VTypes['nameMask'] =  /[A‐Za ‐z\ ‐  ]/;  
		Ext.form.VTypes['nameText']  =  'In‐valid  Director  Name.'; 
		Ext.form.VTypes['name'] =  function(v){  
  			return  Ext.form.VTypes['nameVal'].test(v); 
		}  
{  
			    xtype:  'textfield', 
			    fieldLabel: 'Director', 
			    name:   'director'  ,
				vtype: 'name'//内置校验
			 }


表单监听:

这个监听器备用来等待监听选择事件并且执行相应的函数。每一种监听器都有
它自己默认传递的参数——可以从API 中查找到。 


表单动作:

my_form.getForm().submit(function(f,a){success:....,failure.....})//f:Ext表单对象,a:Ext action对象


 Ext    action对象:

failureType   String  报告服务器端和客户端的错误信息
response   Object   包含了服务器端的原始响应信息,包括有用的header 信息
result  Object   从服务器端响应的JSON 对象
type   String  在提交和加载时执行的动作类型




	<script type="text/javascript">
	Ext.onReady(function(){  
		Ext.QuickTips.init();  //错误提示小气球
		//vtype
		Ext.form.VTypes['nameVal'] =  /^[A ‐Z][A ‐ Za ‐z\ ‐]+[A ‐Z][A ‐Za ‐z\ ‐]+$/;  
        Ext.form.VTypes['nameMask'] =  /[A‐Za ‐z\ ‐  ]/;  
		Ext.form.VTypes['nameText']  =  'In‐valid  Director  Name.'; 
		Ext.form.VTypes['name'] =  function(v){  
  			return  Ext.form.VTypes['nameVal'].test(v); 
		}  
		//combobox的数据集
		var genres  =   new   Ext.data.SimpleStore({ 
  			fields:  ['id',  'genre'],  
  			data  :  [['1','Comedy'],['2','Drama'],['3','Action']]  
		});  
		//combobox的数据库数据集
		var store = new Ext.data.Store({
			reader : new Ext.data.JsonReader({
				totalProperty : "totalProperty",
				root : "root"
			}, [{
				name : "value",
				mapping : "a"
				}
			]),
			proxy: new Ext.data.HttpProxy({
				url: 'comboAction'//action名字
			}),
			autoLoad: true
		});
		//store.load();
		
  		var movie_form  =  new  Ext.FormPanel({  
   			url: 'movie ‐form ‐submit.php', 
   			renderTo:  document.body,  
   			frame:  true,  
   			title:  'Movie  Information  Form',  
   			width: 250,  
   			items:   [{  
			    xtype:  'textfield', 
			    fieldLabel: 'Title',  
			    name:   'title' ,
				allowBlank: false//校验
			 },{  
			    xtype:  'textfield', 
			    fieldLabel: 'Director', 
			    name:   'director'  ,
				vtype: 'name'//内置校验
			 },{  
			    xtype:  'datefield',  
			    fieldLabel: 'Released',  
			    name:   'released'  ,
				disabledDays: [0,1,2,3,4,5]//约束
			},{
				xtype: 'timefield',
				fieldLabel: 'timefield',
				name: 'timefield'
			},{
				xtype: 'numberfield',
				fieldLabel: 'num',
				name: 'num,'
			},{
				xtype: 'combo',
				fieldLabel: 'combofield',
				name: 'combofield'
			},{
				xtype: 'textarea',
				fieldLabel: 'area',
				name: 'area'
			},{
				xtype: 'radio',
				fieldLabel: 'filmed in',
				name: 'filmed_in',
				boxLabel: 'Color'
			},{
				xtype: 'radio',
				hideLabel: false,
				labelSeparator: '',
				name: 'filmed_id',
				boxLabel: 'Black&White'
			},{
				xtype: 'checkbox',
				fieldLabel: 'bad movie',
				name: 'bad_movie'
			},{  
				  xtype:  'combo',  
				  name:   'genre', 
				  fieldLabel: 'Genre', 
				  mode:  'local', //明数据的来源是local   source (本地)还是remote source (远程) 
				  store: genres,  
				  displayField:'genre', //说明把哪一列数据展现在combo
				  width: 120  ,
				  listeners:  {  
  					 select:  function(f,r,i){  
   					 if  (i  ==  0){ 
   					     Ext.Msg.prompt('New   Genre','Name',Ext.emptyFn);
					  }
				   }  
				 }
			},
			{
				xtype: 'combo',
				name:  'store',
				fieldLabel: 'store',
				mode: 'local',
				store: store,
				displayField: 'store',
				width: 120
			}
			
			,{  
				  xtype:  'htmleditor', 
				  name:   'description',  
				  hideLabel: true,  
				  labelSeparator:  '',  
				  height:  100,  
				  anchor:  '100%'  ,
				  listeners:{
				  	specialkey:function(f,e){
				  		if(e.getKey()==e.ENTER){
				  			movie_form.submit();
				  		}
				  	}
				  }
             }  ] ,//items end
             buttons: [{
             	text: 'save',
             	handler: function(){
             		movie_form.getForm().submit(function(f,a){
             			success: function(f,a){//f:Ext表单对象,a:Ext action对象
             				Ext.Msg.alert('success','it work');
             			}
             			failure: function(f,a){
             				Ext.Msg.alert('failure','it failure');
             			}
             		});
             	}
             },{
             	text: 'reset',
             	handler: function(){
             		movie_form.getForm().reset();
             	}
             }]
             
	  });  
	}); 	 
	</script>







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值