2012-12-08 9 views
6

वर्तमान में मैं से सेट किया हुआ उपयोग करते हुए इस पन्नों में जब बाएँ और दाएँ तीर कुंजी दबाने आगे और पीछे जाने के लिए एक समारोह:keydown जब इनपुट ध्यान में नहीं है

$(document).keydown(function (e) { 
    if ($(e.target).is('input')) { return false 
    } else if (e.keyCode == 37) { 
     $(".pageback").click(); 
     return false; 
    } 
    if (e.keyCode == 39) { 
     $(".pagenext").click(); 
     return false; 
    } 
}); 

यह तीर कुंजी होने की अनुमति देता आगे और पीछे ब्राउज़ करने के लिए प्रयोग किया जाता है, लेकिन जब एक टेक्स्टबॉक्स का सामना करना पड़ता है, तो तीर कुंजियां अभी भी सक्रिय होती हैं।

हालांकि यह टेक्स्टबॉक्स फोकस में होने पर कीडाउन फ़ंक्शंस को रोकता है, यह इनपुट क्षेत्र में किसी भी चीज़ को टाइप करने की अनुमति नहीं देता है।

सहायता!

धन्यवाद

+0

कृपया एक लाइन पर सभी पोस्ट करें जो आपके कोड, यह भी पालन करने के लिए मुश्किल है। – nnnnnn

उत्तर

8

"यह भी सब पर कुछ भी अनुमति नहीं है इनपुट क्षेत्र में टाइप किया जाना है।"

if ($(e.target).is('input')) { return false 

जब आप ईवेंट हैंडलर से false लौट यह घटना के लिए डिफ़ॉल्ट व्यवहार से बचाता है:

समस्या यह हिस्सा है।

इसे return true पर बदलें या केवल return (बिना मूल्य के) और डिफ़ॉल्ट व्यवहार (इस मामले में, फ़ील्ड में टाइपिंग) की अनुमति होगी।

(नोट:। तुम भी, पाठ क्षेत्र तत्वों के लिए जाँच करने के लिए चाहते हो सकता है न सिर्फ आदानों)

+0

भयानक धन्यवाद। बाएं और दाएं कुंजी के लिए कुंजी प्रेस के बीच 200 एमएस देरी में एक छोटा सा कहना भी संभव होगा? –

+0

क्षमा करें, मुझे समझ में नहीं आता कि आप देरी जोड़ने के बारे में क्या मतलब रखते हैं, जब तक कि आप का मतलब नहीं है कि आप 200ms के भीतर एक से अधिक तीर-कुंजी प्रेस को रोकना चाहते हैं? (लेकिन मेरी राय में यह एक और सवाल होगा, और आपको पहले इसे लागू करने के लिए जाना चाहिए।) – nnnnnn

+0

मुझे पता है, मैंने एक सेटटाइमआउट फ़ंक्शन का उपयोग करने का प्रयास किया है, बस यह नहीं पता कि इसमें कहां जोड़ा जाना चाहिए बस इतना ही। –

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