复选框状态更改onkeypress

时间:2011-10-17 06:54:50

标签: javascript

如果未选中复选框,则使用JavaScript禁用键盘,如果选中复选框,则仅启用数字。

我的代码是。

    <script type="text/javascript">
     function isNumberKey(evt)
  {
      if(document.getElementById("check1").checked=false)
        {
        var charCode = (evt.which) ? evt.which : event.keyCode
     if (charCode > 31 && (charCode < 48 || charCode > 57))
     return false;
     return true;
        }
    else
        { 
         var charCode = (evt.which) ? evt.which : event.keyCode
     if (charCode > 1 && charCode < 127)
        return false;
            return true;
         }
  }
    </script>

HTML代码

<asp:CheckBox ID="check1" runat="server"/>
<asp:TextBox ID="tbxt1" runat="server" MaxLength="6" Width="200" onkeypress="return isNumberKey(event);" TextMode="Password" autocomplete="off" />

默认情况下,未选中复选框,因此JavaScript不允许我使用键盘。这可以。当我将复选框状态更改为选中并尝试按下某个键时。 OnKeyPress事件复选框状态将更改为未选中。我的代码有什么问题吗?

1 个答案:

答案 0 :(得分:3)

您的代码中存在错误,您需要使用double equlas ==来检查javascript中的相等性。

像这样:

if(document.getElementById("check1").checked==false)

另外,如果你在一对大括号中没有包含所有条件内容,即使它只是一行,也可能会让其他人阅读你的代码非常困惑。

所以我稍微重构它就像这样(为了清楚起见,我没有真正改变任何东西):

  <script type="text/javascript">
  function isNumberKey(evt)
  {
     if(document.getElementById("check1").checked==false)
     {
        var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57))
        {
          return false;
        }
        else
        {
          return true;
        }
     }
     else
     { 
       var charCode = (evt.which) ? evt.which : event.keyCode
       if (charCode > 1 && charCode < 127)
       {
         return false;
       }
       else
       {
         return true;
       }
     }
  }
  </script>