Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何检测CTRL+;用西里尔字母布局的javascript中的V?_Jquery_Keyboard Shortcuts - Fatal编程技术网

Jquery 如何检测CTRL+;用西里尔字母布局的javascript中的V?

Jquery 如何检测CTRL+;用西里尔字母布局的javascript中的V?,jquery,keyboard-shortcuts,Jquery,Keyboard Shortcuts,我通过以下方式检测按键事件中的ctrl+v: .keydown(function(e){ if ( e.ctrlKey && e.keyCode == 86 ) { console.log ('ctrl+v!'); } }); 当我的布局是拉丁语(英语)时,它工作得很好。但当我将布局切换到俄语(西里尔文)时,会执行ctrl+v(插入文本),但jQuery检测不起作用。(e.keyCode=0西里尔文符号) 另外,我需要它井然有序(用于预格式化插入的文本)

我通过以下方式检测按键事件中的
ctrl+v

.keydown(function(e){
   if ( e.ctrlKey && e.keyCode == 86 ) {
      console.log ('ctrl+v!');
   }
});
当我的布局是拉丁语(英语)时,它工作得很好。但当我将布局切换到俄语(西里尔文)时,会执行
ctrl+v
(插入文本),但jQuery检测不起作用。(
e.keyCode=0
西里尔文符号)

另外,我需要它井然有序(用于预格式化插入的文本)


p.p.S.我的任务在没有检测到粘贴的情况下完成了。(对我来说,只听keyup事件就足够了),但这个问题存在于我的电脑上(Ubuntu,Fx6)。西里尔字母的键码被识别为0,你无法检测到带有拉丁字母的快捷方式(
ctrl+c
ctrl+v
,等等)。

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

用于ctrl+n

 if ( e.ctrlKey && (e.which == 110 || e.which==78) ) 
对于ctrl+t:

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

类似于jQuery(document.bind('paste',function(e){alert('pasting!')})的东西可以工作吗?我不知道你说的“井井有条”是什么意思。奇怪的是,你的代码对我来说也适用于俄语kb布局。您在什么环境下工作?@Dr.Molle,我正在使用Ubuntu和Firefox 6。@ipr101,是的,我在谷歌上搜索并找到了
.bind('paste')
,tnx。(虽然我不再需要它了)。但如果需要检测
ctrl+t
ctrl+n
…Yeap。对我来说,它只适用于.keypress和e.which(拉丁语和西里尔语)。使用keyup或e.keyCode时,只能使用拉丁语:(感谢来自jQuery网站的消息-这可能解释了为什么一个可以使用而另一个不能使用:
注意,keydown和keyup提供了一个代码,指示按下了哪个键,而keypress指示输入了哪个字符。例如,小写的“a”将由keydown和keyup报告为65,但由keypress报告为97。大写“A”将由所有事件报告为65。由于这一区别,在捕捉特殊击键(如箭头键)时,.keydown()或.keyup()是更好的选择。
if ( e.ctrlKey && (e.which == 84 || e.which==116) )