各位大侠,如何实现限制textbox可输入字符数。限制最多可以输入18个汉字(36个字符),字母或者数字只能算一个字符,建议不用maxlenth!因为汉字和数字是同一个概念!js也可以!最好可以提示已经输入多少字符,还可以输入多少字符!!!! 
下面是我写的,可是与我的目的不同,伤脑筋、、、、、、、     <script type="text/javascript" language="javascript">
        function checklength( length) {
            var v = document.getElementById("TextBox12").value;
            if (v.length > 10) {
                alert('输入文字不得超过10个字符');
            }
            return false;
        }
           
    </script  <asp:TextBox  ID="TextBox12" runat="server"   onkeyup= "checklength(this) "
 ></asp:TextBox>textboxjavascriptc#限制zifu

解决方案 »

  1.   

    refer:http://blog.163.com/for_fun_zz@126/blog/static/168376345201223181734667/
      

  2.   

    guwei4037  你好,
    你给我的链接,我试了啊,都不行呀!!!! 系统没有报错误,但是没有任何反应!!!! 好奇怪啊!!!!  求解
      

  3.   

    你好,我特地试了一下,是可以的。
    <html>
    <head>
    <script type="text/javascript" language="javascript">
            function checklength( length) {
                var v = document.getElementById("TextBox12").value;
                if (getByteLen(v) > 10) {
                    alert('输入文字不得超过10个字符');
                }
                return false;
            }
       function getByteLen(val) {
                var len = 0;
                for (var i = 0; i < val.length; i++) {
                     var a = val.charAt(i);
                     if (a.match(/[^\x00-\xff]/ig) != null) 
                    {
                        len += 2;
                    }
                    else
                    {
                        len += 1;
                    }
                }
                return len;
            }
        </script
    </head>
    <body>
    <input type="text" id="TextBox12" onkeyup= "checklength(this)"/>
    </body>
    </html>
    另外,<asp:TextBox  ID="TextBox12" runat="server"   onkeyup= "checklength(this) "
     ></asp:TextBox> 是个服务端控件,  var v = document.getElementById("#<%=TextBox12.ClientID%>").value;应该这样获取id。
      

  4.   

    这是我上面给出的html代码,在FF中的效果。
      

  5.   

    guwei4037   真心的感谢你!!!  我试验成功了!
    好像用正则可以达到效果,一个汉字=2个字节   
    但是用unicode 的话,一个汉字= 1个字符;
    还就就是暂时不能提示已经输入多少字,还剩下多少字!!!!   
    最后还是很感谢你!!!!  你好用心的帮助他人!!! 3Q very much!!!!
      

  6.   

    你好,我特地试了一下,是可以的。
    <html>
    <head>
    <script type="text/javascript" language="javascript">
            function checklength( length) {
                var v = document.getElementById("TextBox12").value;
                if (getByteLen(v) > 10) {
                    alert('输入文字不得超过10个字符');
                }
                return false;
            }
       function getByteLen(val) {
                var len = 0;
                for (var i = 0; i < val.length; i++) {
                     var a = val.charAt(i);
                     if (a.match(/[^\x00-\xff]/ig) != null) 
                    {
                        len += 2;
                    }
                    else
                    {
                        len += 1;
                    }
                }
                return len;
            }
        </script
    </head>
    <body>
    <input type="text" id="TextBox12" onkeyup= "checklength(this)"/>
    </body>
    </html>
    另外,<asp:TextBox  ID="TextBox12" runat="server"   onkeyup= "checklength(this) "
     ></asp:TextBox> 是个服务端控件,  var v = document.getElementById("#<%=TextBox12.ClientID%>").value;应该这样获取id。很不错 学习学习
      

  7.   

    加个span标签用于接收提示,js里面控制显示一下。
    function checklength( length) {
                var v = document.getElementById("TextBox12").value;
    var less = getByteLen(v);
    document.getElementById("ttt").innerHTML="还剩下:" + parseInt(10-less)+"个字符。";
                if (less > 10) {
                    alert('输入文字不得超过10个字符');
                }
                return false;
            }
    <input type="text" id="TextBox12" onkeyup= "checklength(this)"/>
    <span id="ttt"></span>
      

  8.   

     very  good    太棒了!!!!   你怎么什么都会!!!  好棒!!!!
    您 辛苦了!!!!
      

  9.   

    guwei4037 
    CSharper    你好:
      如果限制输入字符36个,也就是说最多可以输入18个汉字,  哪个正则怎么表达?? 难得还是:  (a.match(/[^\x00-\xff]/ig) != null)     吗????
      

  10.   

    明白了!!!!      把  if (getByteLen(v) > 10)  改为    if (getByteLen(v) > 36