Chinaunix首页 | 论坛 | 博客
  • 博客访问: 599048
  • 博文数量: 96
  • 博客积分: 1464
  • 博客等级: 上尉
  • 技术积分: 1539
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-12 23:24
文章分类

全部博文(96)

文章存档

2013年(29)

2012年(53)

2011年(14)

分类: Web开发

2013-01-20 17:12:29

用as写的一个flex验证器,用于整数验证,特点:可以传入特定格式的上下界限

package com.common.util
{
	import mx.validators.ValidationResult;
	import mx.validators.Validator;

	public class IntegerDataValidator extends Validator
	{
		/**参数必须是"value_value"形式 ,其中value必须是int型
		 */ 
		public function IntegerDataValidator(min_max:String)
		{
			var range:Array = min_max.split("_");
			if(range.length == 2){
				min = int(range[0]);
				max = int(range[1]);
			}else{
				//输入参数有错
			}
		}
		
		private static var min:int;
		private static var max:int;
		//正整数正则式
		protected static const integer:RegExp = /^[1-9]\d*$/;
		
		private var _invalidFormat:String = "不是正整数";
		private var _outOfRangeFormat:String = "数值不在指定的范围";
		public function set invalidFormat(value:String):void{
			this._invalidFormat = value;
		}
		public function get invalidFormat():String{
			return _invalidFormat;
		}
		public function set outOfRangeFormat(value:String):void{
			this._outOfRangeFormat = value;
		}
		public function get outOfRangeFormat():String{
			return _outOfRangeFormat;
		}
		
		/**
		 * 验证数值是否在指定范围内
		 */ 
		private static function matchRange(value:String):Boolean{
			var val:int = int(value);
			if(val < min || val > max){
				return false;
			}
			return true;
		}
		
		/**
		 * 验证是否为正整数,可以为空
		 */
		private static function matchInteger(value:String):Boolean{
			if(value==""){
				return true;
			}else if(integer.test(value)){
				return true;
			}else{
				return false;
			}
		}
		
		/**
		 * 验证是否整数方法的入口
		 */ 
		public static function validateIntegerData(validator:IntegerDataValidator,
												   	value:Object,
													baseField:String):Array{
			var results:Array = [];
			if(!matchInteger(value.toString())){
				results.push(new ValidationResult(true,baseField,'不是正整数',validator.invalidFormat));
			}else if(!matchRange(value.toString())){
				results.push(new ValidationResult(true,baseField,'数值不在指定的范围',validator.outOfRangeFormat));
			}
			return results;
		}
		
		/**
		 * 覆盖doValidation的验证方法
		 * 用于验证value是否是整数
		 * 验证通过,返回空数组,否则返回有错误信息的数组
		 */ 
		override protected function doValidation(value:Object):Array{
			//第一句表示输入有内容(且非空格)才返回空数组
			var results:Array = super.doValidation(value);
			
			var val:String = value ? String(value):"";
			if(results.length > 0 && ((val.length == 0) && !required)){
				return results;
			}else{
				return validateIntegerData(this, val, null);
			}
		}
		
	}
}


阅读(1171) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~