2012-04-17 9 views
31

ठीक है तो .keypress और .keydown/.keyup में क्या अंतर है? वर्तमान में मैं .keydown का उपयोग कर रहा हूं जो मेरी कुंजी के लिए 38 का एक मूल्य देता है, अब अगर मैं इसे बदलता हूं .keypress यह उसी कुंजी के लिए 109 का मान देता है। अंतर क्या है और एक ही कुंजी के लिए मूल्य अलग क्यों हैं?jQuery .keypress और .keydown .which

+0

आप किस ब्राउज़र का उपयोग कर रहे हैं? – Mathletics

+0

विभिन्न ब्राउज़र के परिणामस्वरूप अलग-अलग ईवेंट हो सकते हैं, लेकिन अलग-अलग कुंजी कमांड नहीं हैं – SpYk3HH

+0

मेरे पास प्रत्येक कुंजी ईवेंट और ब्राउज़र द्वारा विभाजित प्रत्येक के साथ एक जेसन ऑब्जेक्ट है, मैं इसे सभी तीन कीप्रेस के साथ भी एक वास्तविक वास्तविक पोस्ट पोस्ट करूंगा और हम इसका परीक्षण कर सकते हैं , 10 मिनट – SpYk3HH

उत्तर

2

कीडॉउन के बाद कीप्रेस होता है। तो आप यह निर्धारित करने के लिए KeyDown का उपयोग कर सकते हैं कि यह कौन सा कुंजी है, फिर उस वर्ण को अस्वीकार करने के लिए KeyPress।

14

आप पोस्ट निम्नलिखित पढ़ना चाहिए: http://javascript.info/tutorial/keyboard-events

keydown किसी भी कुंजी दबाने पर चलाता है और स्कैन-कोड देता है। कीपैड के बाद कीप्रेस ट्रिगर करता है और चार-कोड देता है, लेकिन यह केवल वर्ण कुंजी के लिए गारंटीकृत है।

20

आप एक बटन दबाते हैं यह एक keydown आग और रिहा यह एक keyup सक्रिय करता है। keypress आमतौर पर उन दोनों के बीच आता है।

keydown और keyup बात के बारे में जो कुंजी बदल दिया गया है। keypress बताता है कि वर्ण वह कुंजी दर्शाता है।

ध्यान दें कि यह सभी ब्राउज़र-निर्भर है!

this article about the differences between the key events as implemented on various browsers देखें।

21

मैं डी $%^@ डी होगा, वास्तव में कुंजीपटल के साथ एक अंतर है और इस बार मुझे कभी एहसास नहीं हुआ। "आर"

http://jsfiddle.net/SpYk3/NePCm/

किसी तरह lol

मेरी बेला देखें और पत्र की तरह कुछ कोशिश मैं इस

मिले और अधिक जानकारी के लिए ध्यान का भुगतान नहीं:

http://www.quirksmode.org/js/keys.html

"दो गुणहैंऔर charCode। रखो (भी) बस, keyCode उपयोगकर्ता द्वारा दबाए गए वास्तविक कीबोर्ड कुंजी के बारे में कुछ कहता है, जबकि charCode परिणामस्वरूप वर्ण का ASCII मान देता है। जानकारी के इन बिट्स एक जैसा नहीं होना चाहिए; उदाहरण के लिए, एक निचला मामला 'ए' और ऊपरी मामला 'ए' में एक ही keyCode है, क्योंकि उपयोगकर्ता एक ही कुंजी दबाता है, लेकिन एक अलग charCode क्योंकि परिणामी चरित्र अलग होता है।

एक्सप्लोरर और ओपेरा समर्थन charCode नहीं है। हालांकि, वे चरित्र जानकारी keyCode में देते हैं, लेकिन केवल onkeypress के साथ। onkeydown और -upkeyCode में महत्वपूर्ण जानकारी है।"

+0

की तरह gimmie हाँ, तो यही कारण है कि मैं क्यों उलझन में हूँ? – ChrisMJ

+0

जैसा कि जेबीएल ने अपने उत्तर में बताया, [यह पृष्ठ] (http://javascript.info/tutorial/keyboard-events) समस्या का वर्णन थोड़ा सा है, लेकिन यह अभी भी पूरे प्रश्न का उत्तर नहीं दे रहा है । हो सकता है कि मैंने पृष्ठ को गलत पढ़ा, लेकिन एक बिंदु पर यह अभी भी दोनों को खींचने के रूप में चारकोड को इंगित करता है, केवल एक अलग मूल्य को दोहराता है। शायद कुछ पुराने जेएस डॉक्टर में एक नज़र का जवाब मिलेगा। मैं अब देख रहा हूं, मेरे ऑब्जेक्ट को रीपॉइट करने के लिए किप्रेस मतभेद – SpYk3HH

+0

शामिल करने के लिए, हालांकि मैं कीप्रेस से परहेज करने का सुझाव दूंगा क्योंकि यह अनुमानित घटनाओं के रूप में नहीं है क्योंकि कीडाउन और कीप – SpYk3HH

5

सामान्य मामलों में, keyup के लिए जाना:

$(document).keyup(function(e){ 
    console.log(e.which); 
}); 

कारण:

  1. keydown फायरिंग जब उपयोगकर्ता कुंजी नीचे रखती रहता है, जबकि keypress और keyup आग केवल एक बार
  2. keypress विशेष कुंजी का पता नहीं लगाता है (उदाहरण के लिए SHIFT), keydown और keyup करो।
संबंधित मुद्दे