关于JS检测用户名字符数的问题!

来源:百度知道 编辑:UC知道 时间:2024/05/13 03:39:11
以下代码是检测密码字符数的!
if (document.form.pass.value.length < 6)
{alert("管理密码位数必须大于6位!");
document.form.pass1.focus();
nmark="1";
//return(false);
而检测用户名我希望是一个汉字等于2个字符一个字母等于一个字符!我应该如何写这段代码呢?谢谢!
我现在是这样写的~可不好用啊!到了检测用户名称的时候就不管用了!实在是不明白为什么!
if(getLen(s)>=6&&getLen(s)<=12)
{alert("用户名称6-12个字节!");
document.form.name.focus();
nmark="1";
//return(false);
}
function getLen(s){
var y=('中国'.length==2);
if(y){
var a=s.length;
var b=a;
for(i=0;i<a;i++){
c=s.charCodeAt(i);
if(c>255)b++;
}
return b;
}else return s.length;
}

有个简单的办法:
汉字的ASC都是大于128的
所以有这个特性:写出:
var len;//字符长度
var len=0;
for(i=0;i<document.form.pass.value.length;i++){
if((document.form.pass.value.charCodeAt(i))>128)
len+=2;
else
len+=1;
}
if (len< 6)
{alert("管理密码位数必须大于6位!");
document.form.pass1.focus();
nmark="1";
//return(false);

你的问题 本身就毛病,
汉字 不是两个字符 ,而是两个字节,但是如果你用 .length的话 无论汉字还是 英文 都是一个字符,,,如果你想 把 用户名中的汉字和 字母分别拆出来 就得用正则表达式子了,