解决方案 »

  1.   

    对纯文本的定义?
    用正则表达式筛掉你认为的非纯文本后获取字符串长度,keydown事件中判断一下,达到限制则return fasle即可
      

  2.   

    直接在按键按下的时候获取,判断下div中文本已有的长度,不就行了
      

  3.   

    <html>
        <head>
            <title></title>
        </head>
        <body>
         <div id="txt" contenteditable="true" style="border: 1px solid #E1E1E1; overflow: auto;"></div>
        </body>
        <script type="text/javascript">
         window.onkeydown = function(){
          debugger;
          var len = document.getElementById('txt').innerHTML.length;
          if(len > 10) {
          return false;
          }
         }
        </script>
    </html>
      

  4.   

    多谢几位的回复。
    由于在div中输入文本,用innerHTML获取会有<br/>或者\n 这些标签,所以在计算文本长度的时候需要过滤掉这些标签。
    我在keydown事件里用网上找的这个函数来过滤:function removeHTMLTag(str) {
        str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tag
        str = str.replace(/[ | ]*\n/g, ''); //去除行尾空白
        str = str.replace(/ /ig, ''); //去掉 
        return str;
    }
      

  5.   


    在div里敲空格会有 $nbsp;  改一下上面的方法function removeHTMLTag(str) {
        str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tag
        str = str.replace(/[ | ]*\n/g, ''); //去除行尾空白
        str = str.replace(/&nbsp;/ig, ''); //去掉尾部空格
        return str;
    }