日期:2014-05-17  浏览次数:20728 次

各位帮一下,崩溃了都
js的限制字数325个,可是这个一会起作用,到325就不能输入了,有时候已经提示字数过多还是能在输入,为什么????
function key(){
  var len=325;
  var content=document.getElementById("gaobai").value;
  var sum=0;
  for(var i = 0;i<content.length;i++){

if((content.charCodeAt(i)>=0)&&(content.charCodeAt(i)<=255)){ 
sum=sum+1;  
}else{  
sum=sum+2;  
}  
}  
  if(sum>325){
  document.getElementById("keyMsg").value="字数过多了!";
  var str=content.substr(0,325);
  document.getElementById("gaobai").value=str;
  }
  else
  {
  len=325-sum;
  document.getElementById("keyMsg").value="您还可输入"+len+"个字";
}
}
------解决方案--------------------
输入过多之后直接修改输入框的属性readonly="readonly" 。
------解决方案--------------------
READONLY:readOnly 设置或获取表明对象内容是否为只读的值 
------解决方案--------------------
输入超过限制后,你需要做一些处理,readonly或者把超过的部分截取掉,或者把整个字符串清空等等

------解决方案--------------------
var str=content.substr(0,325);
你的这句话有问题,上面计算的时候中文的长度算成2,但是你截取字符串的时候中文的长度也要算成2才行的。
325应该换成一个变量,这个变量的值就是你在上边顺换时记录啥时候长度超过325的那个i值。
修改输入框的readonly肯定不行的啊,人家输入超过了还要删除呢
------解决方案--------------------
引用:
var str=content.substr(0,325);
你的这句话有问题,上面计算的时候中文的长度算成2,但是你截取字符串的时候中文的长度也要算成2才行的。
325应该换成一个变量,这个变量的值就是你在上边顺换时记录啥时候长度超过325的那个i值。
修改输入框的readonly肯定不行的啊,人家输入超过了还要删除呢

+1   得考虑中文长度。