2012-02-21 12 views
31

मैं कुछ इसी तरह के सवाल यहाँ देख (जैसे JavaScript: Check if CTRL button was pressed), लेकिन मेरी समस्या वास्तव में घटना को ट्रिगर है। मेरे js कोड:जावास्क्रिप्ट - का पता लगाने के लिए Ctrl कुंजी दबाया या ऊपर, कुंजी दबाने घटना ट्रिगर नहीं है

// Listen to keyboard. 
    window.onkeypress = listenToTheKey; 
    window.onkeyup = listenToKeyUp; 

    /* 
     Gets the key pressed and send a request to the associated function 
     @input key 
    */ 
    function listenToTheKey(e) 
    { 
     if (editFlag == 0) 
     { 
      // If delete key is pressed calls delete 
      if (e.keyCode == 46) 
       deleteNode(); 

      // If insert key is pressed calls add blank 
      if (e.keyCode == 45) 
       createBlank(); 

      if (e.keyCode == 17) 
       ctrlFlag = 1; 
     } 
    } 

घटना ctrl को छोड़कर किसी भी अन्य चाबी के लिए चलाता है।
मैं भी ctrl के लिए यह गति प्रदान करने की जरूरत है।
मैं jQuery/प्रोटोटाइप का उपयोग नहीं कर सकता/जो कुछ भी समाधान स्वीकार्य नहीं हैं।

तो ... मैं ctrl का पता कैसे लगा सकता हूं?

+1

इस नहीं करता है: अगर (e.ctrlKey) {....} काम ..? –

उत्तर

15

आपके इवेंट में संपत्ति ctrlKey नामित किया है। कुंजी को दबाया गया था या नहीं, यह देखने के लिए आप इसे देख सकते हैं। कुंजी जैसे अधिक नियंत्रण के लिए नीचे स्निपेट देखें।

function detectspecialkeys(e){ 
    var evtobj=window.event? event : e 
    if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey) 
     alert("you pressed one of the 'Alt', 'Ctrl', or 'Shift' keys") 
} 
document.onkeypress=detectspecialkeys 
7

ऑनकीप्रेस की बजाय ऑनकीडाउन का उपयोग करने में मदद मिल सकती है।

से http://www.w3schools.com/jsref/event_onkeypress.asp

नोट: onkeypress घटना सभी कुंजियों के लिए निकाल दिया नहीं है (उदाहरण के लिए एएलटी, CTRL शिफ्ट, ESC) सभी ब्राउज़रों में। यह पता लगाने के लिए कि उपयोगकर्ता के पास एक कुंजी दबाया गया है, इसके बजाए ऑनकीडाउन ईवेंट का उपयोग करें, क्योंकि यह सभी कुंजी के लिए काम करता है।

संबंधित मुद्दे