一个汉字对应 +2, 一个英文 Ascii 前128 位 +1PS: 这个是以前写的<!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">
<!-- DW6 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>shawl.qiu template</title>
<style type="text/css">
/* <![CDATA[ *//* ]]> */
</style>
<script type="text/javascript">
//<![CDATA[
function fCkByte(o){
if(o!=null){
var str=o.value+'';
var num=0, limit=40;
for (var i=0; i<str.length; i++){
if(str.charCodeAt(i)>127||str.charCodeAt(i)<0)num+=2;
else num++;
}
if(num>limit){ o.value='';alert('输入超出限制');}
else alert('输入正确');
}
}
//]]>
</script>
</head>
<body>
<input type="text" onchange="fCkByte(this)" />
</body>
</html>

解决方案 »

  1.   

    value="输asdf输asd入";
    alert(value.match(/([\u4e00-\u9fa5])/ig).length);
      

  2.   

    alert("输asdf输asd入".replace(/([^\u4e00-\u9fa5])/ig,"").length);
    求出汉字的数字,然后和你的限制比较一下。
      

  3.   

    哈哈, 重新整理了一下, 现在应该比较友好ing <!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">
    <!-- DW6 -->
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>shawl.qiu template</title>
    <style type="text/css">
    /* <![CDATA[ *//* ]]> */
    </style>
    <script type="text/javascript">
    //<![CDATA[
    function fCkByte(o, limit){
    if(o!=null){
    var str=o.value+'';
    var num=0;
    for (var i=0; i<str.length; i++){
    if(num>limit)temp=i;
    if(str.charCodeAt(i)>127||str.charCodeAt(i)<0)num+=2;
    else num++;
    //alert(str.charCodeAt(i))
    if(num>limit){ 
    o.value=o.value.substr(0,i);
    alert('输入超出限制');
    return;
    }
    }
    }
    }
    //]]>
    </script>
    </head>
    <body>
    <input type="text" onkeyup="fCkByte(this, 10)" />
    </body>
    </html>
      

  4.   

    <input type="text" onchange="if(this.value.replace(/([^\u4e00-\u9fa5])/ig,'').length>10)alert('超过限制');" />
      

  5.   

    <input type="text" onchange="if(this.value.replace(/([^\u4e00-\u9fa5])/ig,'').length>10)alert('超过限制');" />我试了一下不行啊,if 永远为false
      

  6.   

    楼上的是可以的,只不过alert前面少写了分号;