दिलचस्प पोस्ट
एकल लेबल में एकाधिक फ़ॉन्ट रंगों का उपयोग करें आर में स्ट्रिंग में शब्दों की संख्या की गणना करें? गिट के साथ एक शाखा बिंदु ढूँढना? फेसबुक एसडीके के साथ लॉगिन करने में असफल अवैध त्रुटि मुझे Google वित्त जैसे एपीआई के माध्यम से मुद्रा विनिमय दर कैसे प्राप्त हो सकती हैं? जावास्क्रिप्ट प्रोटोटाइप फ़ंक्शंस में "यह" के संदर्भ को संरक्षित करना हैश कोड क्या है? क्या यह अद्वितीय है? Xcode 6 और 10.10 के साथ कोकोपॉड Yosemite क्या होता है जब आप C ++ में दो बार या अधिक एक सूचक को डीलोक करते हैं? लीप वर्ष की गणना के लिए जावा कोड IEnumerable <T> के लिए विदेशी मुद्रा के LINQ समकक्ष स्ट्रिंग स्थिरांक से 'चार *' के लिए सी ++ नापसंद रूपांतरण एक जार में निहित संसाधन लोड करें मैं एक ही तत्व पर पृष्ठभूमि-छवि और CSS3 के ढाल को कैसे जोड़ूं? ऑपरेंडों के मूल्यांकन के क्रम

jQuery के कीप्रेस एरो कुंजियाँ

मैं jQuery में तीर कुंजी प्रेस को कैप्चर करने का प्रयास कर रहा हूं, लेकिन कोई ईवेंट ट्रिगर नहीं किया जा रहा है।

$(function(){ $('html').keypress(function(e){ console.log(e); }); }); 

यह अल्फ़ान्यूमेरिक कुंजियों के लिए ईवेंट तैयार करता है, लेकिन हटाएं, तीर कुंजियां, इत्यादि कोई इवेंट उत्पन्न नहीं करता है।

उन पर कब्जा नहीं करने के लिए मैं क्या कर रहा हूं?

वेब के समाधान से एकत्रित समाधान "jQuery के कीप्रेस एरो कुंजियाँ"

यहां एक उदाहरण है: जेएसएनिप्पेट डेमो कुंजीडाउन () बनाम कुंजीप्रेस ()

आपको .keydown() उपयोग करना चाहिए क्योंकि .keypress() कुंजी प्रकार उपयोग को पकड़ने के लिए "तीर" को अनदेखा कर e.which

फोकस स्क्रीन पर फोकस करने के लिए परिणाम स्क्रीन दबाएं (बाल्ड स्क्रीन पर निचला दाएं) और फिर इसे काम करने के लिए तीर कुंजियों को दबाएं।

टिप्पणियाँ:

  1. .keypress() को Shift, Esc, और हटाए जाने के साथ कभी नहीं छोड़ा जायेगा लेकिन .keydown() होगा
  2. वास्तव में .keypress() कुछ ब्राउज़र में तीर कुंजियों द्वारा ट्रिगर किया जाएगा, लेकिन इसकी क्रॉस-ब्राउज़र नहीं है, इसलिए इसका उपयोग करने के लिए और अधिक विश्वसनीय .keydown()

अधिक उपयोगी जानकारी

  1. आप उपयोग कर सकते हैं .which ईवेंट ऑब्जेक्ट का या। .keyCode – कुछ ब्राउज़र उन में से एक का समर्थन नहीं करेंगे, लेकिन जब jQuery का उपयोग करने के लिए इसका सुरक्षित उपयोग होता है, तो दोनों jQuery को मानकीकृत करते हैं। (मुझे पसंद है .which जिसके साथ कोई समस्या नहीं थी)।
  2. यदि आप वास्तविक कब्जा की गई कुंजी के साथ एक ctrl / alt / shift प्रेस का पता लगाने के लिए चाहते हैं, तो आपको .ctrlKey , .altKey और .shiftKey ईवेंट की वस्तु की जांच करनी चाहिए – यदि वे उपयोग किए गए थे तो वे सही होंगे।
  3. अंत में – यहां कुछ उपयोगी कुंजी कोड दिए गए हैं (एक पूरी सूची के लिए – कुंजीकोड-चीटशीट ):

    • दर्ज करें: 13
    • ऊपर: 38
    • नीचे: 40
    • सही: 39
    • वाम: 37
    • Esc: 27
    • स्पेसबार: 32
    • Ctrl: 17
    • Alt: 18
    • शिफ्ट: 16
 $(document).keydown(function(e) { console.log(e.keyCode); }); 

कीप्रेस घटनाएं तीर कुंजी का पता लगाती हैं, लेकिन सभी ब्राउज़रों में नहीं। इसलिए कुंजीडाउन का उपयोग करना बेहतर है

ये आप अपने कंसोल लॉग में मिलना चाहिए keycodes हैं:

  • बाएं = 37
  • अप = 38
  • सही = 3 9
  • नीचे = 40

आप मौसम की जांच कर सकते हैं एक तीर कुंजी दबाएगी:

 $(document).keydown(function(e){ if (e.keyCode > 36 && e.keyCode < 41) alert( "arrowkey pressed" ); }); 

jsfiddle डेमो

कृपया JQuery से लिंक देखें

http://api.jquery.com/keypress/

इसे कहते हैं

कुंजीपटल इवेंट एक तत्व के लिए भेजा जाता है जब ब्राउज़र कुंजीपटल इनपुट दर्ज करता है। यह कुंजीडाउन ईवेंट के समान है, उस संशोधक और गैर-मुद्रण कुंजी जैसे कि Shift, Esc, और ट्रिगर कुंजी डाउन इवेंट को हटाते हैं, लेकिन किस्पे की घटनाओं को छोड़कर नहीं। मंच और ब्राउज़र के आधार पर दो घटनाओं के बीच अन्य मतभेद उत्पन्न हो सकते हैं।

इसका मतलब है कि आप तीर के मामले में कीपप्रेस का उपयोग नहीं कर सकते।

 $(document).on( "keydown", keyPressed); function keyPressed (e){ e = e || window.e; var newchar = e.which || e.keyCode; alert(newchar) }