复选框状态在按下键后改变

Checkbox status changing onkeypress

本文关键字:改变 状态 复选框      更新时间:2023-09-26

我使用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" />

默认情况下,as复选框未被选中,因此JavaScript不允许我使用我的键盘。这很好。当我改变我的复选框状态为已检查,并试图按下一个键。OnKeyPress事件时,复选框状态变为未选中。我的代码有什么问题吗?

你的代码中有一个bug,你需要双方程==来检查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>