“$”符号的keyCode是多少?

7

我正在尝试禁止在文本输入框中输入其他字符。

因为要输入$符号,必须按下shift键和4键。我不确定如何获取类似这样的按键的keyCode?


可能是JavaScript KeyCodes是什么?的重复问题。 - Pooja Kedar
5个回答

6

5

按键代码仅与按键相关。 $是一个字符,通过两个键Shift和4实现。在使用onkeydown时,没有明确的$按键代码

编辑:Edward指出onkeypress使用键组合,并且对组合具有键码。每天都可以学到新东西 :)

这里有一些代码,从MDN提供的onkeydown示例中进行了编辑,以检测按键代码。

这是更新后的fiddle,使用this S.O. post的帮助使其兼容Firefox。如果你喜欢JQuery解决方案,那也可以。


你编辑的小提琴在Firefox12中给出了这个结果:'按下的键的keyCode为0'(无论我按哪个键...) - GitaarLAB
@GitaarLAB 很奇怪。在IE和Chrome中可以工作。我无法想象Firefox不支持 onkeypress,但将其替换为 onkeydown 在Firefox中确实可行。 - Nick
请查看这个 S.O. 线程,了解 Firefox 中 onkeypress 的信息。我怀疑这不是唯一的一个。 - Nick
我对 Firefox 正在失去信心(除了它开始带来的安全风险之外)...但是说到主题:是的,无论我按什么键,也不响应 shift、alt 或 ctrl。 - GitaarLAB
@GitaarLAB 添加了另一个小提琴,以便兼容Firefox。 - Nick
确认,有效!!太棒了。在SO上总是很有趣:你回答了标题中提出的问题,而我提供了一个不同的观点,说明如何获得与问题文本中概述的相同的最终结果。我也喜欢我的答案,但我会投票支持你的答案,因为用户大多数时候都会寻找与问题标题相关的答案!干得好! - GitaarLAB

2
那么不要使用这种方式来解决你的问题:因为你无法预测每个键盘布局都将$符号输入为shift+4。 你仍然可以获得按键代码4,并检查是否按下了shift键,但你不能确定这一点!
因此,最好是在提交数据之前,简单地替换所有非法字符。想一想:str.replace() 您还可以在输入框的onkeyup事件中检查您设置的非法字符集,有效地在输入时替换所有非法字符! 像:onkeyup="this.value.replace(/[your illegal characters]/gi, '')" 那应该就能做到你想要的了。
请注意:永远不要相信浏览器输入,并且仍应在接收脚本中过滤此输入!!!
祝你好运!

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; }
});

1

onkeypress - Unicode字符代码为:36

onkeydown - Unicode键代码为:52


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接