2012-06-23 18 views
5

मेरे पास एक HTML पृष्ठ पर एक इनपुट है जहां कोई व्यक्ति कुछ टाइप करेगा और जो भी मैं चाहता हूं वह प्रत्येक कार्य को रोकने के लिए बुलाए जाने के लिए होता है। मैं ऑनकीप्रेस घटना के बारे में जानता हूं, लेकिन हर बार एक चरित्र टाइप किया जाता है।)किसी व्यक्ति द्वारा टाइपिंग बंद करने के बाद मैं फ़ंक्शन कैसे कॉल कर सकता हूं?

  1. व्यक्ति प्रकार इनपुट
  2. व्यक्ति लिखना, समारोह foo (बंद हो जाता है के बाद में "यह एक परीक्षण है"
  3. व्यक्ति प्रकार में कुछ और ही कहा जाना चाहिए: यहाँ मैं क्या पसंद करेंगे का एक उदाहरण है इनपुट
  4. व्यक्ति के बाद टाइपिंग, समारोह foo()
  5. दोहराएँ बुलाया जाना चाहिए बंद हो जाता है ....

यह संभव है?

बहुत बहुत धन्यवाद!

+7

परिभाषित करें कि "व्यक्ति टाइपिंग बंद कर दिया गया है" ... – Oded

+2

आप हानि फ़ोकस ईवेंट के माउसअप को संभाल सकते हैं। लेकिन व्यक्ति –

+0

@ ओडेड टाइप नहीं कर रहा है - जैसा कि वे टाइप करते हैं "यह एक परीक्षण है," फिर कीबोर्ड पर कुंजी दबाएं। तो शायद एक दूसरी देरी होनी चाहिए। – Nate

उत्तर

10

ऑनकीपेंट को सुनें। वहां एक टाइमआउट शुरू होता है (आपको कुछ समय के रूप में "स्टॉप" को परिभाषित करना होगा, अन्यथा इसे प्रत्येक कीप पर कॉल किया जाएगा), और समय-समय पर आपके फ़ंक्शन को निष्पादित करें।

यदि आपका टाइमर चल रहा है तो ऑनकीडाउन कॉल किया जाता है, इसे रोकें।

कुछ की तरह ...

var timer; 

function onKeyUpHandler(e){ 
    timer = setTimeout("foo()", 500)  
} 

function onKeyDownHandler(e) { 
    clearTimeout(timer); 
} 

कैसे इस कोड को वास्तव में लग रहा है निर्भर करता है, जहां और आप इसे कैसे उपयोग कर रहे हैं ... अभी जिस तरह यह करने के लिए दिखाने के लिए।

+0

Ixx - धन्यवाद, यह बहुत अच्छा है, लेकिन मुझे यह काम करने के लिए प्रतीत नहीं होता है: http : //jsfiddle.net/j35ba/ – Nate

+0

मुझे एक सेकंड दें, मैं इसे देखूंगा – Ixx

+0

आह, कार्यों का नाम गलत है! क्योंकि इन्हें कॉल करने वाले फ़ंक्शंस में समान नाम हैं, इसलिए जब तक आप स्टैक से अधिक त्रुटि प्राप्त नहीं करते हैं, तब तक वे उन्हें फिर से कॉल करते हैं। कार्यों के नाम बदलें। – Ixx

0

बस प्रेस पर प्रारंभ/पुनरारंभ करने के लिए एक जावास्क्रिप्ट टाइमर सेट करें। फिर बस परिभाषित करें कि "टाइपिंग रोकता है" कितनी देर परिभाषित करता है और आपकी स्क्रिप्ट चलाता है।

0

सबसे पहले, "कुंजी अप" ईवेंट को कैप्चर करें, और "रोकथाम" चर को सत्य पर सेट करें। फिर एक टाइमर सेट करें (इस पर विचार करने से पहले आप कितनी देर प्रतीक्षा करना चाहते हैं "स्टॉप टाइपिंग" ईवेंट)।

, तो इससे पहले कि टाइमर बंद हो जाता है, आप टाइमर चला जाता है जब समाप्त हो रहा है एक "कुंजी को दबाए" घटना, सेट "stoppedTyping = false"

पर कब्जा, अपने टाइमर कॉलबैक "stoppedTyping" का मान देख सकते हैं। यदि यह सत्य है, तो उपयोगकर्ता ने टाइपिंग बंद कर दी है (या अधिक सटीक, आपके टाइमर की अवधि के लिए कोई नया वर्ण टाइप नहीं किया है)। यदि यह गलत है, तो उन्होंने टाइपिंग को रोक नहीं दिया है - आपके टाइमर चलने के दौरान उन्होंने कम से कम एक और चार टाइप किया होगा।

0

अगर मैं अच्छी तरह से समझता हूं, "टाइपिंग रोकें" का अर्थ है "कुछ निश्चित समय के लिए कोई कीस्ट्रोक नहीं"। इस मामले में, आपको टाइमर का उपयोग करना होगा: http://jsfiddle.net/xnghR/1/

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

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