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>

  • 相关阅读:
    uva 442 Matrix Chain Multiplication
    结对编程项目之队友代码分析
    [转] 为什么要使用NoSQL
    Compare Linq2Sql with NHibernate
    使用linq2sql 的DetailView 如何保存多对多关系
    工作流入门
    XML字段的用处
    DesignTimeResourceProviderFactory 不给力啊
    如何给XMLDatasource做分页和排序
    ORM的烦恼
  • 原文地址:https://www.cnblogs.com/yzx99/p/1258912.html
Copyright © 2011-2022 走看看