今日,一朋友遇到一TEXTAREA问题,原以为手到擒来,没想到遇到点问题。
(比如说一个TEXTAREA允许最大输入数10个字):
window.onload=function()      
  {      
      document.getElementById('txt').onkeydown=function()      
      {      
          var val = document.getElementById('txt').value;
         
          if(val.length>10) {      
              event.returnValue=false;
              document.getElementById('txt').value = val.substring(0,10);
          }      
      }      
  }
这个方法,当输入中文,日文的时候,有问题。
   输入中文的时候:比如 第一次输入“我们都是中国人”,第二次输入“我们都是中国人”,这个时候,TEXTAREA中显示的是“我们都是中国人我们都是中国人”,当再按一次键的时候,才会document.getElementById('txt').value = val.substring(0,10);
   输入日文的时候更奇怪,当超过10个字后,再按键的时候,TEXTAREA中空了 ==!
   这个问题应该很多人知道解决方法吧,(类似应用:论坛发言限定最大字数),各位大侠帮个忙,解答下。谢谢先!

解决方案 »

  1.   

    这个还真的不好说,当keyup的时候取值的长度就可以了
      

  2.   

    keyup和change事件都注册一下保险
      

  3.   


    嗯,如果单纯的keyup,右键粘贴就没办法挡了。
      

  4.   

    文本的值改变可以参考:http://topic.csdn.net/u/20100107/10/2d019f0b-bd6a-4c83-aab0-6ed9856f3777.html
    处理改变可以参考:http://www.cnblogs.com/sohighthesky/archive/2010/01/16/1649530.html
      

  5.   


    <script>
    window.onload=function()  
      {  
      document.getElementById('txt').onkeydown=function()  
      {  
           test();
      }  
    document.getElementById('txt').onkeyup=function()  
      {  
           test();
      }  
    document.getElementById('txt').onchange=function()  
      {  
           test();
      }  
      
      }
    function test(){
     var val = document.getElementById('txt').value;
       
      if(val.length>10) {  
      event.returnValue=false;
      document.getElementById('txt').value = val.substring(0,10);
    }
    }
    </script>
    <textarea id="txt"></textarea>