2014-02-20 21 views
0

我已經寫了一個Java腳本函數,其中我正在檢查按下哪個鍵用於文本框的「OnKeyPress」事件。

if (key==35 || key==36) 
     return true; // return true only if the key pressed is HOME or END. 

但是,如果用戶輸入密鑰#或$,那麼上述函數也會返回true。由於#代表35和&代表36.這是不正確的,根據我的要求。

我的問題是,如何區分java-script中的這兩種類型。

請幫忙。

這裏是整個代碼: -

.aspx的: -

<telerik:RadTextBox ID="txtEmpName" runat="server" MaxLength="255"> 
    <ClientEvents OnKeyPress="AlphabetOnly" /> 
</telerik:RadTextBox> 

的Javascript: -

<script language="javascript" type="text/javascript"> 
function AlphabetOnly(sender, eventArgs) 
{ 
    if (key==35 || key==36) 
      return true; 
} 
</script> 
+0

鑰匙從哪裏來? – Vlad

回答

0

如果您正在使用jQueryUI的工作,你可以使用$.ui.keyCode constants:

keyCode: { 

    END: 35, 
    HOME: 36 
} 

所以爲了檢查HOME壓利用:

if (event.keyCode === $.ui.keyCode.HOME) { ... } 
+0

這是如何解決這個問題的?通過將jQueryUI拖放到遊戲中,您能夠準確指出您已解決的單個問題嗎? –

+0

@JanTuroň因爲「#」和「&」沒有在keyCode列表中定義,所以當END和HOME是唯一需要的時候,它將解決抓住這些鍵的問題。 – ltalhouarne

1

如果趕上鍵碼的keydownKEYUP,而不是按鍵

# returns 51, $ returns 52, End is 35 and home is 36 
+0

謝謝kennebec,但在RadTextBox下沒有像客戶端事件的'keyup'或'keydown'事件。 :L – Kings

1

是的,這個問題是很老,但我今天早些時候遇到了同樣的問題。 作爲一種解決方法,我還要檢查shift鍵是否被按下。在大多數鍵盤上,需要移位才能輸入#或$鍵。所以如果按下shift鍵而不是符號鍵,如果不是那麼就是END/HOME鍵。

function checkKeyPress(evt) { 
    if (evt.which === 35) { 
     if (evt.shiftKey === true) { 
      //'#' key 
     } else { 
      //'END' key 
     } 
    } 
} 
相關問題