7

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

因为要得到$你必须按shift-key 和4-key。我不确定您将如何获得这样的 keyCode?

4

5 回答 5

6

没有onkeydown键码,如ngmiceli之前所说

虽然,onkeypresskeycode 存在并且等于36.

JavaScript 事件 KeyCode 测试页

于 2012-08-08T16:12:49.283 回答
5

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

编辑:爱德华指出,它onkeypress使用组合键,并且确实有组合键码。每天学些新东西 :)

这是一些代码,从 MDN 提供的示例中编辑onkeydown,用于检测按键键码。

这是使用此 SO post 的帮助更新为对 Firefox 友好的小提琴。如果您采用这种方式,JQuery 解决方案也可以工作。

于 2012-08-08T16:08:22.040 回答
2

然后不要使用这种方式来解决您的问题:因为您无法预测每个键盘布局都会始终将 $-sign 输入为 shift+4。
您仍然可以获得键码 4,并检查是否按下了 shift,但您不能确定这一点!!

因此,最好简单地替换字段中的所有非法字符(在您提交数据之前)。想一想:str.replace()
您还可以在输入框的 onkeyup 事件中检查您的非法字符集,在您键入时有效地替换所有非法字符!
喜欢:onkeyup="this.value.replace(/[your illegal characters]/gi, '')"
那应该做你想做的事。

请注意:您永远不应信任浏览器输入,并且仍应在接收脚本中过滤此输入!!!

祝你好运!!

于 2012-08-08T16:12:43.400 回答
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; }
});
于 2012-08-08T16:14:18.270 回答
1

onkeypress - Unicode CHARACTER 代码是:36

onkeydown - Unicode KEY 代码是:52

于 2015-07-14T03:49:15.997 回答