注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 科普系列之-使用Windows的..
 帮助

[升级版]用JS判断输入的最大数(一个汉字为二个单位、一个英文字母为一个单位)


2008-01-07 14:05:06
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://youaremyrice.blog.51cto.com/293941/58316
虽然HTML的文本框自代一个验证最大值的函数maxlength,但这家伙不顶用,一个汉字和一个英文字母都是一个单位,这样显然不对。以下是解决方案,我已验证过了
/////////////////////////////////////////////////////////////////////
//   判断长度是否合格
//
// 引数 s   传入的字符串
//           n   限制的长度n以下
//
// 返回值 false   NG
//           true    OK
/////////////////////////////////////////////////////////////////////
function WidthCheck(s, n){
var w = 0;
for (var i=0; i<s.length; i++) {
   var c = s.charCodeAt(i);
   //单字节加1
   if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
    w++;
   }
   else {
    w+=2;
   }
}
if (w > n) {
   return false;
}
return true;
}
 
以下是我自己衍生出的验证输入个数的东东:
<input type="text" size="16" name="num" id="num" onChange="WidthCheck(this,5);"/>

function WidthCheck(str, maxLen){  

var w = 0;  
var tempCount = 0;
for (var i=0; i<str.value.length; i++) {  
   var c = str.value.charCodeAt(i);  
   //单字节加1  
   if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {  
    w++;  
  
   }else {    
    w+=2;  
  
   }  
    
   if (w > maxLen) {  
   str.value = str.value.substr(0,i);
   break;
   }    
}  
}
啊哈哈哈,超级好用的东东
 

本文出自 “超级塞亚人” 博客,请务必保留此出处http://youaremyrice.blog.51cto.com/293941/58316





    文章评论
 
2008-01-07 15:34:22
好的 我搬走啦

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: