सवाल jquery: कीप्रेस, 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!!");
});

क्या यह संभव है? मैंने कोशिश की है और यह काम नहीं किया है, मैं गलत क्या कर रहा हूँ।


44
2018-01-05 12:40


मूल




जवाब:


इसका उपयोग करने के लिए एक अन्य दृष्टिकोण (कोई प्लगइन की आवश्यकता नहीं है) .ctrlKey की संपत्ति घटना वस्तु जो पारित हो जाता है। यह इंगित करता है कि क्या Ctrl घटना के समय दबाया गया था, इस तरह:

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

70
2018-01-05 12:44



लेकिन ऐसा कुछ भी नहीं है: .keypress("c + s", जहां मैं सी पकड़ता हूं और यह कुछ करेगा? और आपके कोड में मुझे उन्हें एक ही समय में दबा देना है, मुझे 1 कुंजी दबाकर एक और कुंजी दबाए रखना है, मैं वास्तव में केवल एक मेनू बना रहा हूं जो पॉप-अप करेगा जब मैं एक निश्चित कुंजी कॉम्बो दबाता हूं, तो शायद एस को दबाकर और बाएं क्लिक करना या जो भी हो, ऐसा कुछ भी नहीं, यह सुनिश्चित नहीं है कि मैं अभी तक किस कुंजी कॉम्बो का उपयोग कर रहा हूं। - android.nick
@ android.nick - jQuery कोर के साथ अंतर्निहित नहीं, नहीं, आपको इसके लिए एक प्लगइन की आवश्यकता होगी उस, लेकिन ctrl, alt और shift कुंजी के लिए, आप बस उपयोग कर सकते हैं .ctrlKey, .altKey तथा .shiftKey गुण। - Nick Craver♦
@nick यह कोड IE8 में काम नहीं करता है। - ravi404
@ravz - कौन सा हिस्सा, और jQuery के किस संस्करण पर? यह सामान बहुत कम स्तर है इसलिए यह चाहिए ठीक काम कर रहे हो। - Nick Craver♦
यह फ़ंक्शन ट्रिगर करेगा जब नियंत्रण + किसी भी कुंजी दबाया जाता है। keypress बस उस पहले तर्क को अनदेखा करता है। आपको तुलना करने की ज़रूरत है e.which यह निर्धारित करने के लिए कि वास्तव में कौन सी कुंजी दबाई गई थी। - nullability


मैं एक थोड़ा पार्टी के लिए देर हो चुकी है लेकिन यह मेरा हिस्सा है

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

30
2017-12-03 18:05



यह jQuery 1.11.2 का उपयोग कर मेरे लिए काम किया। स्वीकृत उत्तर नहीं था। - sarme
सहमत है कि यह विधि jQuery के बाद के संस्करण के साथ बेहतर काम करती है - asherrard
मैक का e e.metaKey है (e.metaKey || e.ctrlKey) && ...मेरे लिए काम किया - kevnk
यह बेकार ढंग से काम किया - Nitin Bansal


की कोशिश 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'); });

5
2018-01-05 12:41



+1 हालांकि Ctrl + C को बाध्य करने के लिए अच्छा अभ्यास नहीं है, या कोई अन्य पूर्वनिर्धारित हॉटकी संयोजन। ध्यान से संभालें। - Pekka 웃
@ पेक्का अच्छा बिंदु - Andy
सहमत हुए, यह सिर्फ एक उदाहरण था, मैं वास्तव में एक मेनू के लिए सबसे अच्छा कुंजी कॉम्बो पता लगाने की कोशिश कर रहा हूं जो माउस कर्सर द्वारा पॉप-अप करेगा। - android.nick
लेकिन मुझे जो चाहिए उसके लिए एक प्लगइन सिर्फ ओवरकिल है, मैंने पहले ही अपने प्रश्न में कुछ काम कोड पोस्ट किया है, पहला उदाहरण। यह ठीक काम करता है, मैं बस यह पता लगाने की कोशिश कर रहा हूं कि क्या मैं दूसरे उदाहरण के साथ एक महत्वपूर्ण कॉम्बो कर सकता हूं। हालांकि धन्यवाद। - android.nick


आप उपयोग नहीं कर सकते Ctrl+सी jQuery द्वारा, लेकिन आप एक और पुस्तकालय के साथ कर सकते हैं shortcut.js 

लाइव डेमो : अब्देनॉर जेएसफ़िल्ड

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


});

3
2018-03-19 09:11





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

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

Jquery HotKeys - Google Code


1
2018-01-05 12:44



एक प्लगइन जो मुझे चाहिए, उसकी सादगी के लिए विशेष रूप से 4.4kb पर बहुत अधिक है, यह बहुत अधिक है, धन्यवाद। - android.nick


<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
2018-05-20 10:20



क्या आप यह बताने के लिए कुछ कथाएं जोड़ने पर विचार करेंगे कि यह कोड क्यों काम करता है, और यह सवाल का जवाब क्या बनाता है? - Andrew Barber
अभी मेरे परीक्षण से - ऐसा लगता है जैसे IE8 के लिए keypressed पास नहीं है कुछ विशेष कुंजी (Ctrl-C - नहीं, Ctrl X और V - yes)। जबकि keydown है पारित, तो यह जवाब काम करता है। - Stuart Axon


मेरे मामले में, मैं एक कीडाउन 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
2017-11-17 12:03





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

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

0
2018-01-22 16:39