文本输入框限制输入:12个字符或6个中文(中英文夹杂)
来源:互联网 发布:autocad软件购买 编辑:程序博客网 时间:2024/05/17 22:46
转自:http://cloud21.iteye.com/blog/745749
这个功能在很多地方都需要用到,会令人头疼的地方就是中英文夹杂的时候无法处理,下面是我自己通过google查询和自己编写的结果:
首先设置maxChars 这个属性,它控制文本框输入的字符长度,在as3中,一个中文和一个字母的长度都是1,但实际上一个中文是2个字节,1个英文是一个字节!
设置restrict = "a-zA-Z\u4e00-\u9fa5",这样是代表只能够输入大小写的英文字母和中文
以上设置可以保证文本的长度和合法性,但是无法达到 12个字符或6个中文(中英文夹杂) 的条件,所一下面我们再加上一步操作:
//获取字符串的字节数
private function getStringBytesLength(str:String,charSet:String):int
{
var bytes:ByteArray = new ByteArray();
bytes.writeMultiByte(str, charSet);
bytes.position = 0;
return bytes.length;
}
给文本输入框加上一个事件:
inputTxt.addEventListener(TextEvent.TEXT_INPUT, __nameInputEvent);
private function __nameInputEvent(e:TextEvent):void
{
if((getStringBytesLength(__nameInput.text,"gb2312") +
getStringBytesLength (e.text,'gb2312')) > __nameInput.maxChars)
{
e.preventDefault();
return;
}
}
这样就完成了!上面是在flash ide 下可以实现的,但是在flex中,TextEvent.TEXT_INPUT 这个事件是不管用的,无法e.preventDefault();所以我继续查资料,然后通过下面的方法,在flex中实现了这个功能:
//这是组件
<s:TextInput x="100" y="65" id="txt_name" width="105" enabled="true" changing="__nameChangingEvent(event)"/>
//这是需要设置的两个属性
txt_name.restrict = "a-zA-Z\u4e00-\u9fa5";
txt_name.maxChars = 12;
//下面是用到的操作
/**
* 姓名输入事件
*
*/
protected function __nameChangingEvent(event:TextOperationEvent):void
{
if((event.operation as InsertTextOperation)==null)
{
return;
}
var input:String=(event.operation as InsertTextOperation).text;
if((__getStringBytesLength(txt_name.text,"gb2312") + __getStringBytesLength(input,'gb2312')) > txt_name.maxChars)
{
event.preventDefault();
}
}
/**
* 获取该字符串的字节数
*/
private function __getStringBytesLength(str:String,charSet:String):int
{
var bytes:ByteArray = new ByteArray();
bytes.writeMultiByte(str, charSet);
bytes.position = 0;
return bytes.length;
}
- AS3文本输入框限制输入:12个字符或6个中文(中英文夹杂)
- 文本输入框限制输入:12个字符或6个中文(中英文夹杂)
- 文本输入框限制输入:12个字符或6个中文(中英文夹杂)
- jquery 限制文本中文输入30个英文数字或15个汉字
- 输入框字数限制+动态提示:10个汉字或20个字符的问题
- EditText 限制输入为中文,个数为6个
- 限制文本输入框textarea最大输入字符的js
- 限制文本输入框textarea最大输入字符的js
- UITextField输入字符限制,中英文混排
- 限制editext输入的字符数不超过140个字符
- 输入框输入字符限制
- Android限制输入框10个汉字或20个字母完美实现
- 控制文本输入框最多输入10个字符长度(即五个汉字)
- 输入多个字符
- 限制一个或多个textfiled输入长度及内容
- 限制UITextField和UITextView的中英文输入长度(中文占两个字符)
- Html input 限制输入中英文字符,及字符数量统计
- 文本域textarea输入字符长度限制
- struts1与struts2 后台与页面交互 区别
- jQuery判断变量是否已定义。
- 电脑桌面主题黑屏了是什么导致的【rmzt】
- java 泛型简谈(二)
- redhat6.4 配置centos6 yum替换
- 文本输入框限制输入:12个字符或6个中文(中英文夹杂)
- mysql几个方便的设置
- shell学习
- VS2010 MSDN 使用经典方式查看 H3Viewer
- c++设计模式--工厂方法模式
- linux 内核分析视频
- 学习正则表达式最好的入门网站
- 将html中的图片和html保存在一个文件里
- 通过js实现单击或双击直接修改内容