2013-05-06 6 views
5

मैं जावास्क्रिप्ट महत्वपूर्ण घटनाओं के साथ काम करने का एक सा कर रहा हूँ (KeyUp, keydown, कुंजी दबाने) और निष्कर्ष निकाला है कि प्रत्येक अपने फायदे और नुकसान जब है यह निर्धारित करने की कोशिश कर रहा है कि उपयोगकर्ता ने किस कुंजी को दबाया है।दोनों विशेष कुंजियों और जावास्क्रिप्ट की घटनाओं के भीतर प्रमुख मामले कैप्चरिंग

jQuery द्वारा प्रदान किए गए event.which का उपयोग करके यह लगता है कि ऑनकीप्रेस केस कोड संवेदनशील होगा जो केस कोड प्रदान करेगा। ए-जेड के लिए 65-90 और ए-जेड के लिए 97-122। हालांकि, दिशात्मक जैसे विशेष कुंजी ऑनकीप्रेस को ट्रिगर नहीं करते हैं। हालांकि वे कीप/* कीडाउन * ट्रिगर करेंगे, लेकिन वे केस संवेदनशील कोड प्रदान नहीं करेंगे।

क्या "दोनों दुनिया के सर्वश्रेष्ठ" समाधान मौजूद हैं जो केस संवेदनशील और विशेष कुंजी पहचान दोनों प्रदान करेगा जो कई घटनाओं के मैन्युअल एक साथ निगरानी की आवश्यकता नहीं है?

+0

संक्षिप्त उत्तर, नहीं, आपको दोनों को पाने के लिए कम से कम दो घटनाएं सुननी होंगी। लंबा जवाब शिफ्ट/नियंत्रण घटनाओं को सुनना होगा, और उस पर आधारित केस को समझना होगा। – adeneo

+0

आप keydown/up घटनाओं पर e.shiftKey की तलाश कर सकते हैं, जो राजधानियों को मार देगा। एक मुद्दा यह है कि सीएपीएस लॉक का उपयोग करते समय, कुंजी ऊपरी कैस होगी और इसमें बदलाव नहीं होगा। – dandavis

उत्तर

1

जब KeyUp घटना

$(document).on('keyup', on_key_up); 

function on_key_up(event) 
{ 
    console.log('keycode:',event);  
} 

के लिए सुन मैं इस लॉग इन करें:

altKey: false 
bubbles: true 
cancelable: true 
char: undefined 
charCode: 0 
ctrlKey: false 
currentTarget: document 
data: undefined 
delegateTarget: document 
eventPhase: 3 
handleObj: Object 
isDefaultPrevented: function ot(){return!1} 
jQuery19106670567644760013: true 
key: undefined 
keyCode: 69 
metaKey: false 
originalEvent: KeyboardEvent 
relatedTarget: undefined 
shiftKey: false 
target: body 
timeStamp: 1367933052234 
type: "keyup" 
view: Window 
which: 69 

आप कीकोड (69 इस मामले में) चाहते हैं, shifKey, altKey, ctrlKey। उदाहरण: यदि आप शिफ्ट + तीर दाएं दबाते हैं, तो आपको कुंजीकोड मिलेगा: 3, shiftKey: true।

function on_key_up(event) 
{ 
if(event.shiftKey) // action 

} 

उम्मीद है कि इससे मदद मिलती है।

+0

हां, लेकिन अक्षरों के मामलों के बीच कोई भेद नहीं किया गया है। आपके उदाहरण में मैं एक 'ई' (कोड 69) और एक 'ई' (फिर कोड 69) के बीच अंतर नहीं बता सकता जो कैप्स लॉक के कारण दर्ज किया गया था, न ही कैप्स लॉक + शिफ्ट के कारण 'ई'। – rheone

0

आप THREEx.KeyboardState.js आज़मा सकते हैं। हालांकि यह lib जेएस गेम के लिए प्रयोग किया जाता है, यह आपके मामले में उपयोगी हो सकता है।

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