分类: 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); } } } }