众所周知textinput、textarea中有提供maxChars属性,控制输入字符的长度,但数据库中一般一个汉字点二个字节,此时,如果在界面处理长度,就需要做一个汉字做二个字节处理,就象jquery formValidator一样,在flex sdk4以上版本,提供了changing事件做处理,悲剧的是4以下版本没有这个事件,这样,就只好自己扩展StringValidator处理,以下给出完整代码
package com.common.util {
import mx.utils.StringUtil;
import mx.validators.StringValidator;
import mx.validators.ValidationResult;
/**
* 自定义字符串检验器
* @author chens
* 引入汉字按照占有二个字节进行处理
*
*/
public class CustomStringValidator extends StringValidator {
private var _label:String;
public function set label(label:String):void {
this._label = label;
}
public function get label():String {
return this._label;
}
override protected function doValidation(value:Object):Array {
var results:Array = super.doValidation(value);
// Return if there are errors
// or if the required property is set to false and length is 0.
var val:String = value ? String(value) : "";
if (results.length > 0 || ((val.length == 0) && !required))
return results;
else
return CustomStringValidator.validateString(this, value, null);
}
public static function validateString(validator:StringValidator, value:Object, baseField:String = null):Array {
var results:Array = [];
// Resource-backed properties of the validator.
var maxLength:Number = Number(validator.maxLength);
var minLength:Number = Number(validator.minLength);
var val:String = value != null ? String(value) : "";
/* 在这处理汉字占用的字节长度 */
var target:* = validator.source;
if (!isNaN(maxLength) && val.replace(/[^\x00-\xff]/g, "xx").length > maxLength) {
results.push(new ValidationResult(true, baseField, "tooLong", target.label + '最多可输入' + maxLength + '个字符或' + (maxLength / 2) + '个汉字'));
return results;
}
if (!isNaN(minLength) && val.length < minLength) {
results.push(new ValidationResult(true, baseField, "tooShort", target.label + '至少输入' + minLength + '个字符或' + (minLength / 2 < 1 ? 1 : minLength / 2) + '个汉字'));
return results;
}
return results;
}
}
}
分享到:
相关推荐
flex中一个很不错的拖拉伸缩组件,适合新人学习的组件....
flex中文帮助flex中文帮助flex中文帮助flex中文帮助
Flex两个小例子Flex两个小例子Flex两个小例子Flex两个小例子Flex两个小例子
编译器
Flex版的汉字拼音转换工具 可处理“重庆”--“chongqing”这类情况,但需要自己做上下文语意分析 翻译自sourceforge上Java版的pinyin4j库
本文所有资料均来自Flex官方文档,其英文版权归 Adobe公司所有。 均有实例代码讲解
flex 汉字转拼音
Visual Studio中创建Flex+Bison项目,源码中包含多个vs2010可编译通过的demo,用win_flex_bison-2.5.18 其中包含《Visual Studio中创建Flex+Bison项目.pdf》学习flex bison入门资料《flex与bison中文版.pdf》
flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助flex中文帮助
Flex万年历记事本_flex源码
flex2中文帮助,给大家共享
flex中文帮助文档flex中文帮助文档
flex中文教程flex中文教程flex中文教程
使用flex在控件上画点,通用的。简介明了。
flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图...
Flex4 中文API chm格式
Flex中文帮助 技术支持: http://www.ZzGps.Cn 技术分享
flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助...
D:\下载\Fuji Flexa软件介绍(中文版).rarD:\下载\Fuji Flexa软件介绍(中文版).rarD:\下载\Fuji Flexa软件介绍(中文版).rarD:\下载\Fuji Flexa软件介绍(中文版).rarD:\下载\Fuji Flexa软件介绍(中文版).rarD:\下载\...
Flex4.0中文API.zip,Flex4.0中文帮助文档。Flex4.0中文API.zip,Flex4.0中文帮助文档。