2011-01-05 14 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 दबाता हूं और एस यह कुछ करेगा? और आपके कोड में मुझे उन्हें एक ही समय में दबा देना होगा, मुझे पकड़ना होगा 1 कुंजी और एक और कुंजी दबाएं, मैं वास्तव में सिर्फ एक मेनू बना रहा हूं जो पॉप-अप करेगा जब मैं एक निश्चित कुंजी कॉम्बो दबाता हूं, तो हो सकता है कि एस को दबाकर बाएं क्लिक करें या जो कुछ भी हो, ऐसा कुछ नहीं, सुनिश्चित करें कि कौन सी कुंजी कॉम्बो i ' मैं अभी तक उपयोग कर रहा हूं। –

+4

@ android.nick - jQuery कोर के साथ अंतर्निहित नहीं, नहीं, आपको * उस * के लिए एक प्लगइन की आवश्यकता होगी, लेकिन ctrl, alt और shift कुंजी के लिए, आप केवल '.ctrlKey' का उपयोग कर सकते हैं, '.altKey' और' .shiftKey' गुण। –

+0

@nick यह कोड IE8 में काम नहीं करता है। – ravi404

5

इसके बजाय Jquery Hotkeys प्लगइन आज़माएं - यह आपके लिए आवश्यक सब कुछ करेगा।

jQuery Hotkeys है एक प्लग-इन है कि आप आसानी से कुंजीपटल अपने कोड में कहीं भी घटनाओं लगभग किसी भी कुंजी संयोजन समर्थन करने के लिए जोड़ सकते हैं और संचालकों को दूर कर सकते हैं।

इस प्लग 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 यह बाध्य करने के लिए Ctrl + C हालांकि अच्छा अभ्यास नहीं है, या किसी भी पूर्वनिर्धारित हॉटकी संयोजन। ध्यान से संभालें। –

+0

@ पेक्का अच्छा बिंदु – Andy

+0

सहमत है, यह सिर्फ एक उदाहरण था, मैं वास्तव में एक मेनू के लिए सबसे अच्छा कुंजी कॉम्बो पता लगाने की कोशिश कर रहा हूं जो माउस कर्सर द्वारा पॉप-अप करेगा। –

1

Jquery के लिए एक प्लगइन "Hotkeys" कहा जाता है जो आपको संयोजनों को कम करने के लिए बाध्य करने की अनुमति देता है।

क्या यह आपके बाद क्या करता है?

Jquery HotKeys - Google Code

+0

एक प्लगइन मुझे जो चाहिए, उसकी सादगी के लिए एक प्रकार का ओवरकिल है, खासकर 4.4 केबी पर, यह बहुत अधिक है, धन्यवाद। –

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 - no, Ctrl X और V - yes) के लिए keypressed पास नहीं करता है। जबकि keydown * * पास * है, तो यह उत्तर काम करता है। –

3

आप जे द्वारा Ctrl +सी उपयोग नहीं कर सकते क्वेरी, लेकिन आप एक और पुस्तकालय जो 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

मैक के बाद के संस्करण के साथ बेहतर काम करती है मैक ⌘ e.metaKey है '(e.metaKey || e.ctrlKey) && ...' मेरे लिए काम किया – kevnk

0

में मेरा मामला, मैं एक कीडाउन ctrl कुंजी की तलाश में था और ईवेंट पर क्लिक करता था। मेरे 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" जहाँ मैं एक कड़ी कुछ विशिष्ट क्षेत्रों के लिए वर्ग के नाम है और मैं कुंजी की मेरी संयोजन का उपयोग कर इसे उपयोग और क्लिक करना चाहते हैं।

0

मैं इसे .keypress() के साथ काम करने के लिए नहीं मिल सकता है, लेकिन यह इस तरह .keydown() फ़ंक्शन के साथ काम किया:

$(document).keydown(function(e) { 
    if(e.key == "c" && e.ctrlKey) { 
     console.log('ctrl+c was pressed'); 
    } 
}); 
संबंधित मुद्दे