2011-10-17 82 views
2

如果未选中复选框,并且在复选框被选中时仅启用数字,则使用JavaScript禁用键盘。复选框状态更改onkeypress

我的代码是。

<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

在'.checked = FALSE'你指定假的,不检查它。尝试修复并再次运行。此外,你的代码缩进是一个巨大的混乱,我无法弄清楚发生了什么。 – Zirak

回答

3

您的代码有错误,您需要使用双等号==来检查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> 
+0

谢谢!这对我有效。 –

相关问题