验ASCII码来判定是否中文吧。

解决方案 »

  1.   

    <script>
    var laststr=""
    function checkstr(str) 

    num=str.length
    var arr=str.match(/[^\x00-\x80]/ig)
    if(arr!=null)num+=arr.length
    if(num>20)event.srcElement.value=laststr
    laststr=event.srcElement.value

    </script>
    <input id="msg" onkeyup="checkstr(this.value)">
      

  2.   

    <input type="text" size="100" maxlength="20" onpropertychange="check(this)">
    <textarea maxlength="20" cols="100" onpropertychange="check(this)"></textarea><!--我刚刚新写一个函数,还没有来得及做成htc呢,你就问这个了,接好哦,还热着呢-->
    <!--你在文本框中复制看看--><script>
    function check(o){
       var maxLen=/^\d{1,}$/.test(o.getAttribute("maxlength"))?o.getAttribute("maxlength"):0;
       var strSource=(typeof(o.value)=="string")?o.value:"";
       if (!(maxLen>0)) return;
       if (RealLen(strSource)<=maxLen) return;
       var newValue="";
       var c="";
       var i=0;
       var j=0;
       var wholeString=new String(strSource);
       for(;;newValue+=c,c=wholeString.substr(i,1),i++,j++){
           if (/[^\x00-\xff]/.test(c)) j++;
        if (j>maxLen) break;
       }
       o.value=newValue;
       event.returnValue = false;
       event.cancelBubble=true;  
       return true;
    }function RealLen(v){  
       return (typeof(v)=="string")?v.replace(/[^\x00-\xff]/g,"^^").length:0;

    }
    </script>
      

  3.   

    我也来一个<SCRIPT LANGUAGE="JavaScript">
    <!--
    function reallen(InString){
    return InString.replace(/[^\x00-\xff]/g,"^^").length;
    }
    function check()
    {
    with (event.srcElement)
    return (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 46 || reallen(value)<size )
    }
    //-->
    </SCRIPT>
    <input type="text" size="20" onKeydown=return(check())>
      

  4.   

    这里是30个aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa楼上的,你把这些a复制给你的文本框看看
      

  5.   

    Go_Rush(阿舜) 
    你的用起来有问题哦
    老是报undefined没有定义
      

  6.   

    to flydragon2000(娇娃) 你用的浏览器是什么版本阿,我的是ie6.0没有任何问题阿。那浏览器提示是哪行出错呢
      

  7.   

    是if (!(maxLen>0)) return;这一行出错
    我估计返回的undefined IE5.0不认识了
      

  8.   

    我这里没有ie5.0.不好调试这样把,你把你要的限制长度传给函数,改动如下function check(o,imax){
        //我这里没有检查参数,你可以加些代码,检查imax是不是合法数字
       var maxLen=imax;   
         var strSource=(typeof(o.value)=="string")?o.value:"";
       //.....以下都不变好数调用的时候就用check(this,20)   这个20就是你要的长度了
      

  9.   

    var elm;
    function reallen(InString){
    return InString.replace(/[^\x00-\xff]/g,"^^").length;
    }
    function check()
    {
    elm=event.srcElement;
    setTimeout("doCheck()",0);
    }
    function doCheck()
    {
    var str = elm.value;
    status = str.length
    while (reallen(str)>elm.size)
    str = str.substr(0,str.length-1)
    elm.value=str;
    }
    //-->
    </SCRIPT>
    <input type="text" size="20" onkeydown=check() onpaste=check()>