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