您的位置:首页 > 其它

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

2015-04-05 17:41 639 查看
今天在写微信端自定义菜单,微信端要求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").onkeyup=function(){limitDo.call(this,16)};
$("txt2").onkeyup=function(){limitDo.call(this,6)};
$("txt3").onkeyup=function(){limitDo.call(this,7)};
}();
</script>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐