2011-01-05 5 views
42

나는 만들고있는 웹 사이트에서 바로 가기를 만들려고합니다. 나는 그것을 이런 식으로 할 수있는 알고jquery : keypress, 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!!"); 
}); 

이 가능합니까? 나는 그것을 시도하고 그것은 작동하지 않았다, 내가 뭘 잘못하고있다.

답변

69

또 다른 방법 (어떤 플러그인이 필요하지 않습니다) 그냥 전달 가져옵니다 event object.ctrlKey 속성을 사용하는 Ctrl 키 이벤트의 시간에 누를 경우를 나타냅니다, 같은 :.

$(document).keypress("c",function(e) { 
    if(e.ctrlKey) 
    alert("Ctrl+C was pressed!!"); 
}); 
+0

하지만 아무것도 없습니다 :'.keypress ("c + s",'어디에서 C와 S를 누르면 뭔가 할 것입니까? 그리고 코드에서 정확한 시간에 눌러야합니다. 1 키를 누른 다음 다른 키를 누르십시오. 저는 정말로 특정 키 콤보를 누르면 팝업 메뉴를 생성합니다. 그래서 키를 누르는 것과 같이 무엇인가, 아직 사용하지 않을 것입니다. –

+4

@ android.nick - jQuery 코어가 내장되어 있지 않습니다. * 그 *에 대한 플러그인이 필요 합니다만, Ctrl, Alt 및 Shift 키에는'.ctrlKey'를 사용할 수 있습니다. '.altKey'와'.shiftKey' 속성 –

+0

이 코드는 IE8에서 작동하지 않습니다 – ravi404

5

대신 Jquery Hotkeys 플러그인을 사용해보세요. 필요한 모든 작업을 수행 할 것입니다.

jQuery를 단축키는 플러그인에 쉽게 거의 모든 키 조합을 지원하는 코드 어디서나 키보드 이벤트에 대한 처리기를 추가 및 제거 그 수 있습니다.

이 플러그인은 Tzury 바 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'); }); 
+2

+1, 또는 사전 정의 된 다른 단축키 조합을 사용할 수 있습니다. 조심히 다루세요. –

+0

@ Pekka 좋은 지적 – Andy

+0

동의, 그냥 예를 들어, 나는 실제로 마우스 커서로 팝업 팝업 메뉴에 대한 최고의 키 콤보를 알아 내려고하고있어. –

1

jQuery를위한 플러그인은 "핫키"라는있다 키 다운 조합에 바인딩 할 수 있습니다.

이 기능이 현재 사용하고 계신 기능입니까?

Jquery HotKeys - Google Code

+0

플러그인은 필자가 필요로하는 것, 특히 4.4kb에서의 단순성을 과소 평가하는 것과 같습니다. 너무 많은 것입니다. 감사합니다. –

1
<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> 
+1

이 코드가 왜 작동하는지 설명하기 위해 몇 가지 설명을 추가하고 질문에 대한 답을 얻으려면 무엇이 필요합니까? –

+0

내 테스트에서 IE8이 일부 * 특수 키 (Ctrl-C - 아니요, Ctrl X 및 V - 예)에 대해 키 누르기를 통과하지 못한 것처럼 보입니다. keydown *이 전달되는 반면,이 대답은 작동합니다. –

3

당신은 J로 Ctrl 키 + C을 사용할 수 없습니다 쿼리,하지만 당신은 shortcut.js

라이브 데모 또 다른 라이브러리와 함께 할 수 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"); 
     }); 


}); 
29

나는 오전 작은 늦게 내 일부 파티에 있지만 여기

$(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"); 
    } 
}); 
+6

이것은 jQuery 1.11.2를 사용하여 저에게 효과적이었습니다. 인정 된 대답은 그렇지 않았습니다. – sarme

+2

동의 함이 방법은 이후 버전의 jQuery에서 더 잘 작동합니다. – asherrard

+2

Mac의 ⌘는 e.metaKey이므로'(e.metaKey || e.ctrlKey) && ... '는 나를 위해 일했습니다 – kevnk

0

에서 내 경우 keydown ctrl 키 및 클릭 이벤트를 찾고있었습니다. 내 JQuery와는 다음과 같습니다

"linkAccess"나는 링크가 일부 특정 분야에 대한 클래스 이름이고 내가 키의 내 조합을 사용하여 액세스를 클릭합니다
$('.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); 
    } 
    } 
}); 

.

0

나는 그것이 .keypress()와 함께 작동하도록 얻을 수 있지만이 같은 .keydown() 함수와 함께 일 : 그것은 비록 Ctrl + C를 결합하는 좋은 방법이 아니다

$(document).keydown(function(e) { 
    if(e.key == "c" && e.ctrlKey) { 
     console.log('ctrl+c was pressed'); 
    } 
}); 
관련 문제