使用按键处理ctrl键

时间:2015-12-31 07:21:25

标签: javascript events keypress ctrl

我已经环顾四周了,我知道你可以用javascript中的keydown事件检测ctrl键(ctrl + c,ctrl + v等),并经常使用它以便事件没有被其他进程捕获但是我想通过按键事件处理它(目的是通过一个事件而不是2来处理它,并希望在使用同一功能的其他键盘快捷键时允许一致性)现在它似乎是所有keypress事件对象都具有alt,ctrl,shift等布尔属性之后应该是可能的,并且通过的按键事件的字符代码与键本身不同(例如z keypress事件是charCode 122,其中ctrl + z keypress事件是charCode 26)。所以问题是,有没有办法阻止默认拦截ctrl键,以便按键事件可以处理它们?

对于我的特定实例我使用chrome但我也想要一般答案。

更新

我发现可以使用keydown事件中的from来阻止所有ctrl键的默认设置(例如ctrl + s试图保存页面)

$('element').keydown(function(event){
    if(event.ctrlKey){
        event.preventDefault();
    }
});

(注意:这只能防止无法阻止Chrome中新选项卡的ctrl + t等可预防的默认值)

但是这里的问题是,这也会阻止keypress事件的发生是否有办法将事件传递给keypress事件,其方式是具有keypress属性(意味着现在将定义charCode)

1 个答案:

答案 0 :(得分:0)

从另一个网站上读到这个 ​​-

  

键盘事件是前端开发的一个较为复杂的部分。那里   是不一致和跨浏览器的问题。

     

但仍然有一些食谱有助于应对普通   情况很容易。

     

有以下键盘事件:

     

<强> KEYDOWN
  按下一把钥匙。

  的按键
  按下字符键。

  的 KEYUP
  钥匙被释放。


     

keypress和keydown之间存在根本区别。

     

Keydown在任何按键时触发并提供扫描码。      Keydress在keydown之后触发并提供char代码,但只保证字符键。

鉴于此,按键无法捕获控制键,因为它不会生成字符。

更多信息可以在这里找到更具体的信息。

http://javascript.info/tutorial/keyboard-events

希望这有帮助