【问题标题】:How to detect CTRL+V in javascript with Cyrillic layout?如何在带有西里尔文布局的 javascript 中检测 CTRL+V?
【发布时间】:2011-08-12 22:38:58
【问题描述】:

我以这种方式在 keydown 事件中检测到ctrl+v

.keydown(function(e){
   if ( e.ctrlKey && e.keyCode == 86 ) {
      console.log ('ctrl+v!');
   }
});

当我的布局是拉丁语(英语)时,它工作正常。但是当我将布局切换为俄语(西里尔文)时 - 执行了 ctrl+v(插入了文本)但 jQuery 检测不起作用。 (e.keyCode = 0 的西里尔符号)。

附:我需要它以良好的顺序(用于预格式化插入的文本)

附言我的任务是在没有检测到粘贴的情况下完成的。 (只听 keyup 事件对我来说就足够了),但我的 PC 上存在问题(Ubuntu,Fx6)。西里尔符号的 keyCode 被识别为 0,无法检测到带有拉丁字母的快捷键(ctrl+cctrl+v 等)。

【问题讨论】:

  • 'jQuery(document).bind('paste', function(e){ alert('pasting!') })' 这样的东西会起作用吗?我不确定您所说的“井井有条”是什么意思。
  • 很奇怪,你的代码也适用于我的俄罗斯 kb 布局。您在什么环境中工作?
  • @Dr.Molle,我使用的是 Ubuntu 和 Firefox 6。
  • @ipr101,是的,我用谷歌搜索发现.bind('paste'),tnx。 (虽然我不再需要它了)。但是如果需要检测ctrl+tctrl+n...

标签: jquery keyboard-shortcuts


【解决方案1】:

这在 ubuntu 上也适用于我(FF 5):

.keypress(function(e){
    if ( e.ctrlKey && (e.which == 86 || e.which==118) ) {
      console.log ('ctrl+v!');
   }
});

ctrl+n 使用

 if ( e.ctrlKey && (e.which == 110 || e.which==78) ) 

对于 ctrl+t:

if ( e.ctrlKey && (e.which == 84 || e.which==116) )

【讨论】:

  • 是的。对我来说,它仅适用于 .keypress 和 e.which (拉丁文和西里尔文)。使用 keyup 或 e.keyCode 仅适用于拉丁语:( 谢谢
  • 来自 jQuery 网站 - 这可以解释为什么一个有效而另一个无效:Note that keydown and keyup provide a code indicating which key is pressed, while keypress indicates which character was entered. For example, a lowercase "a" will be reported as 65 by keydown and keyup, but as 97 by keypress. An uppercase "A" is reported as 65 by all events. Because of this distinction, when catching special keystrokes such as arrow keys, .keydown() or .keyup() is a better choice.link
猜你喜欢
  • 2011-02-23
  • 2014-11-10
  • 1970-01-01
  • 2017-07-31
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多