我正在尝试禁止在文本输入中输入所有其他字符。
因为要获得$
,你必须按 shift -key和 4 -key。我不确定你会怎么得到像这样的事情的keyCode? p>
答案 0 :(得分:5)
键码仅与键有关。 $
是一个字符,通过两个键Shift和4实现。使用$
时,onkeydown
没有明确的密钥代码
编辑:爱德华曾指出onkeypress
使用了键组合,并且确实有组合键码。每天都学到新东西:)
Here's some code,由MDN提供的onkeydown
示例编辑,用于检测按键密钥代码。
Here's the fiddle使用this S.O. post的帮助更新为Firefox友好版。如果你这样摆动,JQuery解决方案也会起作用。
答案 1 :(得分:5)
答案 2 :(得分:2)
然后DONT用这种方式来解决你的问题:因为你无法预测每个键盘布局都会将$ -sign作为shift + 4输入。
您仍然可以获得键码4,并检查是否按下了班次,但您无法确定这一点!!
因此最好简单地替换字段中的所有非法字符(在提交数据之前)。想一想:str.replace()
您还可以在输入框的onkeyup事件中检查您的非法字符集,在您键入时有效地替换所有非法字符!
喜欢:onkeyup="this.value.replace(/[your illegal characters]/gi, '')"
那应该做你想要的。
请注意:您绝不应该信任浏览器输入,并且仍应在接收脚本中过滤此输入!
祝你好运!!
答案 3 :(得分:1)
$
没有密钥代码,因为它不是有效密钥 - 必须通过某种移位器访问它。
通常,您会检查移位器是否处于活动状态,并在相关键上侦听keypress
事件。对于您的实例中的QWERTY布局,这样的事情是这样的:
var shiftPressed = false;
$(window).keydown(function(e) {
if(e.which == 16) { shiftPressed = true; }
if(e.which == 52 && shiftPressed)
{
// Do whatever here...
}
});
$(window).keyup(function(e) {
if(e.which == 16) { shiftPressed = false; }
});
答案 4 :(得分:0)
onkeypress - Unicode CHARACTER代码为:36
onkeydown - Unicode KEY代码为:52