zoukankan      html  css  js  c++  java
  • onKeypress对中文无效

    今天想在javascript中限制输入长度,使用如下的代码:
    <html>
    <body>
    <input type="textbox" onKeypress="Javascript:zlk(5);" />
    <script type="text/javascript">
    function zlk(lSize)
    {
      if (event.srcElement.value.truelen()>lSize)
      { //长度超出时,取消输入
        event.keyCode=0;
      }
    }
    String.prototype.truelen=function()
    {
      var i=0;
      for (var j=0;j<this.length;j++)
      {
        if (this.charCodeAt(j)>255)
          i+=2;
        else
          i++;
      }
      return i;
    }
    </script>
    </body>
    </html>
    结果发现对数字、英文都工作得很好,但对中文却不行,根本不会激发onKeypress事件。以为IE的BUG,后来找到另一个事件onpropertychange来处理,代码改为如下:
    <html>
    <body>
    <input type="textbox" onpropertychange="Javascript:zlpc(5);"/>
    <script type="text/javascript">
    var lastValue="";
    function zlpc(lSize)
    {
     //debugger;
     if (event.propertyName=="value")
      if (event.srcElement.value.truelen()>lSize)
      { //长度超出时,取消输入
       //event.returnValue=false; //这种取消事件的方法没有效果
       //只好用恢复原值的方法
       event.srcElement.value=lastValue;
      }
      else
       lastValue=event.srcElement.value;
    }

    String.prototype.truelen=function()
    {
      var i=0;
      for (var j=0;j<this.length;j++)
      {
        if (this.charCodeAt(j)>255)
          i+=2;
        else
          i++;
      }
      return i;
    }
    </script>
    </body>
    </html>

  • 相关阅读:
    java基础英语---第十九天
    java基础英语---第十六天
    java基础英语---第十七天
    java基础英语---第十四天
    java基础英语---第十五天
    java基础英语---第十三天
    设计模式
    设计模式
    设计模式
    设计模式
  • 原文地址:https://www.cnblogs.com/yzx99/p/1258912.html
Copyright © 2011-2022 走看看