ExtJs表单几种验证与扩展

首先说明一下表单验证与其相关的一些设置 

Ext.QuickTips.init();   //为组件提供提示信息功能,form的主要提示信息就是客户端验证的错误信息。 
Ext.form.Field.prototype.msgTarget='side';         //指示错误出现的方式,包含的值为

qtip-当鼠标移动到控件上面时显示提示  //默认值为qtip,使用此种方式必须声明Ext.QuickTips.init();   进行初始化
title-在浏览器的标题显示

under-在控件的底下显示错误提示 
side-在控件右边显示一个错误图标,鼠标指向图标时显示错误提示. 默认值. 
id-[element id]错误提示显示在指定id的HTML元件中

 

表单项的显示错误出现的方式也可以修改各项的msgTarget属性,如

 

Js代码   收藏代码
  1. {  
  2.     xtype : 'textfield',  
  3.     fieldLabel : '姓名' ,  
  4.     name : 'name' ,  
  5.     allowBlank : false ,  
  6.     msgTarget : 'qtip'  
  7. }  

 

下面我们来看一下和表单验证相关的属性及他们验证的顺序

1、是否允许为空

allowBlank : Boolean //false则不能为空,默认为true 
blankText : String//当为空时的错误提示信息

2、输入数据长度限制

minLength : Number 
minLengthText : String 
maxLength : Number 
maxLengthText : String

3、使用vtype验证

vtype : String 
vtypeText : String

 

extjs的vtype默认支持的验证有:

  • alpha //只能输入字母,无法输入其他(如数字,特殊符号等)
  • alphanum//只能输入字母和数字,无法输入其他
  • email//email验证,要求的格式是"[email protected]"
  • url//url格式验证,要求的格式是http://www.baidu.com

 

前面的验证都是extjs已经提供的,我们也可以自定义验证函数。

//先用Ext.apply方法添加自定义的password验证函数(也可以取其他的名字)

 

Js代码   收藏代码
  1. Ext.apply(Ext.form.VTypes, {  
  2.             password : function(val, field) {// val指这里的文本框值,field指这个文本框组件,大家要明白这个意思  
  3.                 if (field.confirmTo) {// confirmTo是我们自定义的配置参数,一般用来保存另外的组件的id值  
  4.                     var pwd = Ext.get(field.confirmTo);// 取得confirmTo的那个id的值  
  5.                     return (val == pwd.getValue());  
  6.                 }  
  7.                 return true;  
  8.             }  
  9.         });  
  10. // 配置items参数  
  11. items : [{  
  12.             fieldLabel : "密码",  
  13.             id : "pass1"  
  14.         }, {  
  15.             fieldLabel : "确认密码",  
  16.             id : "pass2",  
  17.             vtype : "password",// 自定义的验证类型  
  18.             vtypeText : "两次密码不一致!",  
  19.             confirmTo : "pass1"// 要比较的另外一个的组件的id  
  20.         }];  
 

下面是自定义了年龄验证

 

Js代码   收藏代码
  1. //扩展VTypes增加id验证方式,和年龄验证    
  2. Ext.apply(Ext.form.VTypes,{    
  3.         'age' : function(_v){    
  4.             if(/^\d+$/.test(_v)){//判断必须是数字      
  5.                 var _age = parseInt(_v);    
  6.                 //增加业务逻辑,小于100的数字才符合年龄    
  7.                 if(0 < _age && _age <100){    
  8.                     return true ;    
  9.                 }    
  10.             }    
  11.             return false ;    
  12.         },    
  13.         ageText : '年龄必须为数字,并且不能超过100岁,格式为23' , //出错信息后的默认提示信息        
  14.     ageMask:/[0-9]/i  //键盘输入时的校验    
  15. })    
 

4、使用validator编写自定义函数验证

validator : Function

 

Js代码   收藏代码
  1. {  
  2.     xtype : "numberfield",  
  3.     fieldLabel : "高",  
  4.     value : 150,  
  5.     width : 48,  
  6.     validator : function(value) {  
  7.         if(value =='1'){  
  8.                 return '提示信息';  
  9.             }  
  10.         }  
  11.         return true;  
  12.     },  
  13.     name : "height"  
  14. }  

 

以下是自定义输入内容字节的验证

 

Js代码   收藏代码
  1. {  
  2.     xtype : "field",  
  3.     fieldLabel : "姓名",  
  4.     value : 150,  
  5.     width : 48,  
  6.     validator : function(value) {  
  7.         var length = value.replace(/[^\x00-\xff]/g, "xx").length;  
  8.         if(length>1000){  
  9.             return '长度不能超过1000个字节,一个汉字字符为两个字节!';  
  10.         }  
  11.         return true;  
  12.     },  
  13.     name : "name"  
  14. }  
 

 

5、使用自己编写的正则表达式regex

regex : RegExp 
regexText : String

 

Js代码   收藏代码
  1. new Ext.form.TextField({  
  2. fieldLabel : "姓名",  
  3. name : "author_nam",  
  4. regex : /[\u4e00-\u9fa5]/, //正则表达式在/...../之间. [\u4e00-\u9fa5] : 只能输入中文.  
  5. regexText:"只能输入中文!"//正则表达式错误提示  
  6. allowBlank : false //此验证依然有效.不许为空.  

你可能感兴趣的:(ExtJs表单几种验证与扩展)