允许输入Javascript中的键盘快捷键

时间:2015-12-03 20:51:49

标签: javascript jquery

我有一个tel输入,我将输入限制为只有数字,退格和标签这样

$("#phone").on('keydown',function(e) { 
var a = [];
var k = e.which;
for (i = 48; i < 58; i++)
    a.push(i);
a.push(8);
a.push(9);
if (!(a.indexOf(k)>=0))
    e.preventDefault();
});

但是在输入中你无法使用像cmd+Rctl+R这样的键盘快捷键进行刷新,这不是什么大问题,但我想知道是否有办法看到它用户正在尝试使用keybaord捷径? (特别刷新。)?

感谢

3 个答案:

答案 0 :(得分:0)

要捕获键的组合,您可以在条件中使用&&语句。对于Windows,您应该使用event.ctrlKey,对于Mac,您应该使用event.metaKey

适用于Windows

if (event.ctrlKey && event.keyCode === 82)

适用于Mac

if (event.metaKey && event.keyCode === 82)
  

metaKey属性返回一个布尔值,指示触发鼠标事件时是否按下了“META”键。

     

并非所有键盘都具有元键。 Sun微系统键盘,MIT和LISP机器键盘很常见。元键标记为“META”或标有实心菱形“◆”符号。

     

在Mac键盘上,META键由“Command / Cmd”(“⌘”)键表示

答案 1 :(得分:0)

$(selector).on('keydown', function (e) {
    if (e.keyCode === 91)
        console.log('command key!');

    if (e.keyCode === 17)
        console.log('ctrl key!');
});

妥善处理这些密钥。

答案 2 :(得分:0)

完成您要做的事情的更好方法是简单地限制输入允许保留的字符类型。基本上,每次触发keydown事件时,请检查输入并删除任何非数字或空格的字符。

请考虑以下事项:

$("#phone").on('keydown',function() { 
     // This will remove all characters that are not digits between 0-9
     this.value = this.value.replace(/[^0-9\.]/g,'');
}