2010-11-13 16 views
9

मैं वर्तमान कुंजी दबाने पर घटनाओं आग इस जावास्क्रिप्ट kepypress कोड का उपयोग कर रहा कुंजी दबाने के लिए:बाइंड एकाधिक कुंजी घटना

$(document).keydown(function(e) { 
    switch(e.keyCode) { 

    case 39: 
     e.preventDefault(); 
     alert("Arrow Key"); 
     break; 

    case 37: 
     e.preventDefault(); 
     alert("Arrow Key"); 
    } 
}); 

लेकिन मैं क्या सोच रहा हूँ अगर मैं बजाय एक प्रमुख बाँध बाध्यकारी दो चाबियों का एक संयोजन से कर सकते हैं ।

$(document).keydown(function(e) { 
    switch(e.keyCode) { 
     case 39 && 37: 
      e.preventDefault(); 
      alert("Arrow Key"); 
     break; 
    } 
}); 
+0

आप उन्हें एक ही समय में दबाने मतलब है? फिर आप http://stackoverflow.com/questions/1652210/can-i-intercept-control-a-keypresses-on-ie देख सकते हैं। –

उत्तर

24

यदि आप एक साथ कई कुंजी जांचना चाहते हैं तो आपको केवल एक नियमित कुंजी और एक या अधिक संशोधक कुंजी (alt/shift/ctrl) का उपयोग करना चाहिए क्योंकि आप यह सुनिश्चित नहीं कर सकते कि दो नियमित कुंजी वास्तव में एक बार दबाए जा सकते हैं उपयोगकर्ता का कीबोर्ड (असल में, उन्हें हमेशा दबाया जा सकता है लेकिन कीबोर्ड को वायर्ड किए जाने के तरीके के कारण पीसी इसे समझ नहीं सकता है)।

यदि मिलान संशोधक कुंजी दबाया गया था की जांच करने के e.altKey, e.ctrlKey, e.shiftKey क्षेत्रों का उपयोग कर सकते हैं।

उदाहरण:

$(document).keydown(function(e) { 
    if(e.which == 98 && e.ctrlKey) { 
     // ctrl+b pressed 
    } 
}); 
+0

धन्यवाद, मैं वास्तव में मदद की सराहना करता हूं। हाँ यह वास्तव में और अधिक है जो मैं खोज रहा था। एक बार फिर धन्यवाद। – mcbeav

+0

बिल्कुल सही, सही, सही - सटीक जो मैं आज सुबह देख रहा था !! – SchweizerSchoggi

3

क्यों if बजाय switch का उपयोग नहीं: मैं संभवतः की तरह कुछ कर सकते हैं? यह सभी ब्राउज़रों में काम करने के लिए (jQuery स्वचालित रूप से संपत्ति जो वास्तव में कुंजी कोड शामिल प्रदान करती है

$(document).keydown(function(e) { 
    switch(e.which) { 
     case 39: 
     case 37: 
      e.preventDefault(); 
      alert("Arrow Key"); 
      break; 
    } 
}); 

ध्यान दें कि मैं e.keyCode के बजाय e.which उपयोग कर रहा हूँ:

$(document).keydown(function(e) { 
    if ((e.keyCode === 37) || (e.keyCode === 39)) { 
     e.preventDefault(); 
     alert("Arrow Key"); 
    } 
}); 
+0

हाँ, यह करेगा, मुझे नहीं पता कि मैं एक स्विच का उपयोग क्यों करना पसंद करता हूं, लेकिन मुझे लगता है कि यह वास्तव में कोई फर्क नहीं पड़ता। मदद के लिए एक बार फिर से धन्यवाद। बहुत सराहना की। – mcbeav

+0

मुझे पता है कि इस पोस्ट के साथ कुछ भी करने के लिए नहीं है लेकिन यदि आप इसे देखते हैं, तो शायद आपको एक मिनट मिल जाए तो आप jQuery LazyLoad प्लगइन के साथ मेरी मदद कर सकते हैं? – mcbeav

+0

बस जिज्ञासा, लेकिन जब आप कह रहे हैं कि यह आपके स्वीकार्य उत्तर कैसे हो सकता है "मैं कुछ ऐसी चीज की तलाश कर रहा हूं जो दबाए गए कुंजियों के संयोजन के लिए काम करेगी। कोई विचार?" एक और टिप्पणी में? – ThiefMaster

3

आप मामले fallthrough उपयोग कर सकते हैं ई के लिए)।

+1

नहीं। 'कीडाउन' घटना के लिए, 'कुंजीकोड' सभी ब्राउज़रों में सही संपत्ति है। शायद आप 'कीप्रेस' घटनाओं के बारे में सोच रहे हैं? –

+0

मैं इसका परीक्षण करने जा रहा हूं, लेकिन बस यह सुनिश्चित करने के लिए, यह दोनों चाबियाँ, संयोजन, दाहिनी ओर दबाने पर आग लग रही है? – mcbeav

+0

नहीं, यह कोड 'संयोजन' के लिए नहीं है, यह 'उनमें से किसी एक को दबाया गया है' के लिए है। –

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