2014-02-20 22 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 
     } 
    } 
} 
相关问题