中文两个字符,其它一个字符。
最大100个字符。
旁边要有告警字符数。
当到101个字符时弹出窗口,此时textarea里只能显示最多100个字符 。

解决方案 »

  1.   

    http://www.52hai.com/2005/article.asp?id=2517 看这个适合不
      

  2.   

    看来LZ知道在哪写事件....
     onpropertychange 里写
    this.value.replace(/[^\x00-\xff]/g, '00').length>100
      

  3.   


    完整的例子如下:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head>
    <script language="javascript" type="text/javascript">
    function chk(id)
    {
    var maxLen=100; //根据需要设定最大的字符数
    var o=document.getElementById(id);
    if(o.value.length>maxLen)
    {
    alert("字符个数已经超过 : "+maxLen + " 个了");
    o.value=o.value.substr(0,maxLen);
    }
    }

    </script>
    <body>
    <textarea name="text01" id="text01" cols="40" rows="10" onKeyUp="javascript:chk('text01');">1234</textarea>
    </body>
    </html>
      

  4.   

    如果是中文字符
     o.value=o.value.substr(0,maxLen);
     textarea 里的中文不会算成两个字符
      

  5.   

    <textarea onkeydown="abc(this,100)">
    </textarea>
    <script>
    function abc(o,n){
    var str = o.value;
    if(str=="")return;
    var re = /[\u0000-\u00FF]/g;
    var re2 = /[^\u0000-\u00FF]/g;
    var length=0;
    if(str.match(re)&&str.match(re).length)
    {length += str.match(re).length;}
    else if(str.match(re)!=null)
    {length +=1;}
    if(str.match(re2)&&str.match(re2).length)
    {length += str.match(re).length*2;}
    else if(str.match(re2)!=null)
    {length +=1;}
    if(length==n)
    alert("too long");
    return false;
    }
    </script>
    我也玩玩...
      

  6.   

    natineprince 只能弹一次,人家接着输,又没有了。
      

  7.   

    <textarea onkeydown="return abc(this,100)">
    </textarea>
    <script>
    function abc(o,n){
    var str = o.value;
    if(str=="")return;
    if(event.keyCode==8)return;
    var re = /[\u0000-\u00FF]/g;
    var re2 = /[^\u0000-\u00FF]/g;
    var length=0;
    if(str.match(re)&&str.match(re).length)
    {length += str.match(re).length;}
    else if(str.match(re)!=null)
    {length +=1;}
    if(str.match(re2)&&str.match(re2).length)
    {length += str.match(re).length*2;}
    else if(str.match(re2)!=null)
    {length +=1;}
    if(length>=n){
    alert("too long");
    return false;}
    return true;
    }
    </script>
    感觉这个做法始终不大好...
      

  8.   


    测试通过了,完整如下,呵呵。有分不 ....:)<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head>
    <script language="javascript" type="text/javascript">
    function chk(id)
    {
    var maxLen=100; //根据需要设定最大的字符数
    var o=document.getElementById(id);
    var ln=0;
    var cnln=0;
    for(var i=0;i<o.value.length;i++)
    {
    if(o.value.charCodeAt(i)>128)
    {cnln+=1;ln+=2;}
    else
    ln+=1;
    if (ln>=maxLen) break;
    }
    if(ln>=maxLen)
    {
    o.value=o.value.substr(0,maxLen-cnln);
    alert(ln+"\n字符个数已经超过 : "+maxLen + " 个了");
    }
    }

    </script>
    <body>
    <textarea name="text01" id="text01" cols="40" rows="10" onKeyUp="javascript:chk('text01');">1234</textarea>
    </body>
    </html>
      

  9.   

    natineprince  的方法有点小意思,
    不过不能用Delete键删除,一删除就来个 too long ,结束没变化, 哈哈
    只能用Backspace键。等着更好滴……  谢谢各路高手。
      

  10.   

     
    13楼的shenzhenNBA 改良后,达标。呵呵5分钟后给分。结帐。