2011-10-17 147 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

謝謝!這對我有效。 –

相關問題