一级菜单不超过4个汉字或8个字母,以字节数为限制条件,包括汉字和字母(此例汉字默认等于3个字节,字母字符为1个字节)

今天在写微信端自定义菜单,微信端要求1级菜单菜单名不能超过16个字节,经过测试发现,微信端一个汉字相当于3个字节,字母字符为1个字节,故 1级菜单名称最多为5个汉字,输入框最多可输入5个汉字外加1个字符,为了满足条件,在网上查找了很多,发现了某位大神的代码,其代码可按字节数来限制输入框数据的输入,经过我的修改,改为以下符合我需求的代码:
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>限制输入字节数</title> 
<meta name="author" content="sohighthesky"/> 
<style type="text/css"> 
#div1 {width:500px;margin:20px auto;} 
#div1 ul {list-style-type:decimal;line-height:25px;} 
</style> 
</head> 
<body> 
<div id="div1"> 
<ul> 
<li>可输入16个字节:<input type="text" id="txt1" value="你好e"/></li> 
<li>可输入6个字节:<input type="text" id="txt2" value="hello,"/></li> 
<li>可输入7个字节:<input type="text" id="txt3" value=",he"/></li> 
<li>可输入n个字节:<input type="text" id="txt4"/></li> 
</ul> 
</div> 
</body> 
<script type="text/javascript"> 
/*! 
*author:sohighthesky 
*Date:2010-1-16 
*/ 
!function(){ 
var len=function(s){//获取字符串的字节长度 
s=String(s); 
//alert((s.match(/[^\x00-\xff]/g) ||"").length);
//alert(s.length);
//字符长度eg:张三abc    长度为5
var length=s.length;
//匹配到的全角字符长度 eg:张三 长度为2
var hanzi=(s.match(/[^\x00-\xff]/g) ||"").length;
//字符个数
var num=length-hanzi;
//算整个字节数(微信端一个汉字占用3个字节,一级菜单总字节数不超过16个)
var fstr=hanzi*3+num;
return fstr;
}, 
limitDo=function(limit){ 
var val=this.value; 
if(len(val)>limit) { 
//val=val.substr(0,limit); 
while(len(val=val.substr(0,val.length-1))>limit); 
this.value=val; 
} 
},$=function(id){return typeof(id)==='string'?document.getElementById(id):id;}; 


$("txt1").οnkeyup=function(){limitDo.call(this,16)}; 
$("txt2").οnkeyup=function(){limitDo.call(this,6)}; 
$("txt3").οnkeyup=function(){limitDo.call(this,7)}; 
}(); 
</script> 
</html> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值