Нажатие клавиш, Ctrl + C (или что-то подобное)
Я пытаюсь создать ярлыки на своем веб-сайте. Я знаю, что могу сделать это так:
if(e.which == 17) isCtrl=true;
if(e.which == 83 && isCtrl == true) {
alert('CTRL+S COMBO WAS PRESSED!')
//run code for CTRL+S -- ie, save!
e.preventDefault();
}
Но приведенный ниже пример проще и меньше кода, но это не событие комбинированного нажатия клавиш:
$(document).keypress("c",function() {
alert("Just C was pressed..");
});
Итак, я хочу знать, смогу ли я с помощью этого второго примера сделать что-то вроде:
$(document).keypress("ctrl+c",function() {
alert("Ctrl+C was pressed!!");
});
это возможно? Я пробовал, и это не сработало, что я делаю не так?
Ответы
Ответ 1
Другой подход (без плагинов) - просто использовать .ctrlKey
свойство объект события, который передается. Он указывает, было ли нажато Ctrl во время события, например:
$(document).keypress("c",function(e) {
if(e.ctrlKey)
alert("Ctrl+C was pressed!!");
});
Ответ 2
Я немного опаздываю на вечеринку, но вот моя часть
$(document).on('keydown', function ( e ) {
// You may replace `c` with whatever key you want
if ((e.metaKey || e.ctrlKey) && ( String.fromCharCode(e.which).toLowerCase() === 'c') ) {
console.log( "You pressed CTRL + C" );
}
});
Ответ 3
Попробуйте вместо Jquery Hotkeys плагин - он сделает все, что вам нужно.
jQuery Hotkeys - это плагин, который позволяет вы легко добавляете и удаляете обработчики для события клавиатуры в любом месте вашего кода поддерживая практически любую комбинацию клавиш.
Этот плагин основан на плагине by Tzury Bar Yochay: jQuery.hotkeys
Синтаксис выглядит следующим образом:
$(expression).bind(types, keys, handler); $(expression).unbind(types, handler);
$(document).bind('keydown', 'ctrl+a', fn);
// e.g. replace '$' sign with 'EUR'
// $('input.foo').bind('keyup', '$', function(){
// this.value = this.value.replace('$', 'EUR'); });
Ответ 4
Вы не можете использовать Ctrl + C по jQuery, но вы можете использовать другую библиотеку, которая shortcut.js
Live Demo:
Abdennour JSFiddle
$(document).ready(function() {
shortcut.add("Ctrl+C", function() {
$('span').html("أحسنت. لقد ضغطت على حرفي : Ctrl+C");
});
shortcut.add("Ctrl+V", function() {
$('span').html("أحسنت. لقد ضغطت على حرفي : Ctrl+V");
});
shortcut.add("Ctrl+X", function() {
$('span').html("أحسنت. لقد ضغطت على حرفي : Ctrl+X");
});
});
Ответ 5
Я не мог заставить его работать с .keypress(), но он работал с функцией .keydown() следующим образом:
$(document).keydown(function(e) {
if(e.key == "c" && e.ctrlKey) {
console.log('ctrl+c was pressed');
}
});
Ответ 6
В JQuery есть плагин под названием "Горячие клавиши", который позволяет вам привязываться к комбинациям клавиш.
Это делает то, что вам нужно?
JQuery HotKeys - Код Google
Ответ 7
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type='text/javascript'>
var ctrlMode = false; // if true the ctrl key is down
///this works
$(document).keydown(function(e){
if(e.ctrlKey){
ctrlMode = true;
};
});
$(document).keyup(function(e){
ctrlMode = false;
});
</script>
Ответ 8
В моем случае я искал ключ ctrl keydown и щелкнул событие.
Мой jquery выглядит следующим образом:
$('.linkAccess').click( function (event) {
if(true === event.ctrlKey) {
/* Extract the value */
var $link = $('.linkAccess');
var value = $link.val();
/* Verified if the link is not null */
if('' !== value){
window.open(value);
}
}
});
Где "linkAccess" - это имя класса для некоторых определенных полей, где у меня есть ссылка, и я хочу получить к ней доступ, используя мою комбинацию ключа и щелчок.
Ответ 9
![enter image description here]()
$(window).keypress("c", function(e) {
if (!e.ctrlKey)
return;
console.info("CTRL + C detected !");
});
$(window).keypress("c", function(e) {
if (!e.ctrlKey)
return;
$("div").show();
});
/*https://gist.github.com/jeromyanglim/3952143 */
kbd {
white-space: nowrap;
color: #000;
background: #eee;
border-style: solid;
border-color: #ccc #aaa #888 #bbb;
padding: 2px 6px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2), 0 0 0 1px #ffffff inset;
-webkit-box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2), 0 0 0 1px #ffffff inset;
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2), 0 0 0 1px #ffffff inset;
background-color: #FAFAFA;
border-color: #CCCCCC #CCCCCC #FFFFFF;
border-style: solid solid none;
border-width: 1px 1px medium;
color: #444444;
font-family: 'Helvetica Neue', Helvetica, Arial, Sans-serif;
font-size: 11px;
font-weight: bold;
white-space: nowrap;
display: inline-block;
margin-bottom: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="display:none">
<kbd>CTRL</kbd> + <kbd>C</kbd> detected !
</div>
Ответ 10
Начиная с 2019 года, это работает (по крайней мере, в Chrome)
$(document).keypress(function(e) {
var key = (event.which || event.keyCode) ;
if(e.ctrlKey) {
if (key == 26) { console.log('Ctrl+Z was pressed') ; }
else if (key == 25) { console.log('Ctrl+Y was pressed') ; }
else if (key == 19) { console.log('Ctrl+S was pressed') ; }
else { console.log('Ctrl', key, 'was pressed') ; }
}
});