function checkLength(obj, name, max)
{
var maxChars = max;
var ch_length = obj.value.length;
for(var i=Math.floor(maxChars/2); i<ch_length; i++)
{
var content = obj.value.substring(0,i);
if(content.replace(/([\u0391-\uFFE5])/ig,'11').length>=maxChars)
{
obj.value = obj.value.substring(0,i);
document.getElementById("ls_"+name).innerHTML = curr.toString(0);
break;
}
}
test = obj.value.replace(/([\u0391-\uFFE5])/ig,'11');
var curr = maxChars - test.length; 
document.getElementById("ls_"+name).innerHTML = curr.toString();
}

解决方案 »

  1.   

    建议楼主自己先解释一下,否则别人根本不知道你的水平和理解能力。这样就无从下手给你解释。解释得过粗,你还是听不懂,解释得过细了,比如连 ; i<ch_length 或者 i++ 都解释一翻,又过于浪费时间。 
      

  2.   

    就说说 这个实现的是个什么功能便可...中间的这个事什么意思便可:
    if(content.replace(/([\u0391-\uFFE5])/ig,'11').length>=maxChars)
      

  3.   

    if(content.replace(/([\u0391-\uFFE5])/ig,'11').length>=maxChars) 
    //如果是中文,替换成成11然后再获取长度,也就是中文算长度2
      

  4.   

    // 判断 content 的字节长度是否大于等于最大字节数 maxChars,
    // 如果含有双字节字符(从 \u0391 至 \uFFE5 表示的双字节字符),则替换为 11,然后再计算字节长度!
    if(content.replace(/([\u0391-\uFFE5])/ig,'11').length>=maxChars)
      

  5.   

    需要十六进制数
    创建了一个不正确的 Unicode 转义序列。Unicode 转义序列以 \u 开头,后跟整整四位十六进制数(不多,也不少)。Unicode 十六进制数不仅包含数字 0-9,大写字母 A-F,还有小写字母 a-f。下面的示例演示了正确形成的 Unicode 转义序列。z = "\u1A5F";
    要改正此错误 请确保 Unicode 十六进制数是以 \u 开头的,只包含数字0-9,大写字母 A-F、小写字母 a-f;并组成四个数字。 
    注意 如果希望在字符串中使用文字文本 t \u,请使用两个短斜杠 _(\\u) – 一个用来将第一个反斜杠转义。
    Web 开发常用手册JScript语言参考.rar
    http://download.csdn.net/source/308916DHTML参考手册.rar
    http://download.csdn.net/source/308913样式表中文手册.chm
    http://download.csdn.net/source/304124