2012-04-19 13 views
5

द्वारा लॉन्च किया गया है मुझे jQuery click ईवेंट का अजीब व्यवहार मिला है। यदि हम कीबोर्ड नेविगेशन (एक्सेसिबिलिटी केस) का उपयोग कर रहे हैं, तो एंटर या स्पेस द्वारा लॉन्च किया गया है (यह निर्भर करता है, हम किस HTML तत्व का उपयोग कर रहे हैं)।jQuery माउस का .click() कीबोर्ड नेविगेशन

, आप परिणाम फ्रेम में कीबोर्ड के साथ नेविगेट करने के लिए कोशिश कर सकते हैं, और क्लिक jsfiddle पर एक परीक्षण पृष्ठ है विभिन्न स्थितियों में शुरू की है:

http://jsfiddle.net/DCXhN/9/

jQuery के मैनुअल में, मैं पाया है का वर्णन निम्नलिखित click घटना:

"माउस पॉइंटर तत्व पर होने पर क्लिक ईवेंट को तत्व पर भेजा जाता है, और माउस बटन दबाया जाता है और जारी किया जाता है। कोई भी HTML तत्व इस ईवेंट को प्राप्त कर सकता है।"

क्या यह सामान्य है? सामान्य व्यवहार होने पर केवल माउस क्लिक ईवेंट को कैसे रोकें?

+0

हां, नेविगेट करने के लिए टैब का उपयोग करने जैसे कीबोर्ड इंटरैक्शन और फिर ENTER क्लिक ईवेंट ट्रिगर करेगा ... क्योंकि यह – devnull69

+0

वाह के लिए mousedown/mouseup व्यवहार के लिए एक कीबोर्ड शॉर्टकट है। यदि यह तर्क jQuery या ब्राउज़र स्तर पर परिभाषित किया गया है? –

+0

विंडोज़ पर सभी प्रमुख ब्राउज़र डिफ़ॉल्ट रूप से उस उदाहरण (IE9, FF, Ch, Sa) पर ऐसा करते हैं। इसके अलावा मैंने jQuery से सादा जावास्क्रिप्ट में ईवेंट हैंडलिंग बदल दी है और व्यवहार वही है, इसलिए यह एक ब्राउज़र उपाय होना चाहिए –

उत्तर

8

हां, यह सामान्य है। JQuery दस्तावेज सही है, लेकिन थोड़ा अपूर्ण है। वहाँ पर अधिक विवरण है WC3 site - उदाहरण के लिए:

नोट: अधिकतम पहुंच के लिए, सामग्री लेखकों जब कस्टम नियंत्रण के लिए सक्रियण व्यवहार को परिभाषित है, बल्कि इस तरह के mousedown के रूप में अन्य की ओर इशारा करते-डिवाइस घटना प्रकार से क्लिक ईवेंट प्रकार का उपयोग करने के लिए प्रोत्साहित किया जाता या माउसअप, जो अधिक डिवाइस-विशिष्ट हैं। यद्यपि क्लिक इवेंट प्रकार की उत्पत्ति पॉइंटर डिवाइस (उदा।, माउस) में होती है, इसके बाद कार्यान्वयन संवर्द्धन ने इसे उस संगठन से परे बढ़ा दिया है, और इसे तत्व सक्रियण के लिए डिवाइस-स्वतंत्र ईवेंट प्रकार माना जा सकता है।

या, कुछ तत्वों के लिए, एक और तरीका डालें, क्लिक करें() अनिवार्य रूप से एक डिवाइस-विशिष्ट घटना के बजाय लॉजिकल ईवेंट है।

यदि आप वास्तव में केवल माउस इनपुट का जवाब देना चाहते हैं, तो आप mousedown/up घटनाओं का उपयोग कर सकते हैं - लेकिन ध्यान रखें कि आपको अपने यूआई कीबोर्ड को अलग से एक्सेस करना होगा (उदाहरण के लिए। कीडाउन/प्रेस/आदि घटनाओं का उपयोग करना एक कीबोर्ड समतुल्य प्रदान करने के लिए)।

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