2012-04-04 14 views
5

मैं एक jQuery ईवेंट हैंडलर है कि एकjQuery इनपुट ईवेंट सक्रिय नहीं है

<input id="myId" type="text" /> 

तत्व में हर परिवर्तन के प्रति प्रतिक्रिया करता है: जब इनपुट को छोड़कर

$("#myId").bind('input', function (e) {  
     // Do Stuff 
    }); 

यह पूरी तरह से काम करता है, #myId खाली है (उदाहरण के लिए इनपुट बॉक्स में केवल 1 वर्ण था, और मैं इसे बैकस्पेस से हटा देता हूं)। अगर इनपुट खाली हो गया है, तो घटना आग नहीं आती है। अगर मैं एक चरित्र दर्ज करता हूं, तो घटना आग लगती है।

क्या यह ज्ञात मुद्दा है? क्या मुझसे कुछ गलत हो रही है? जब इनपुट खाली हो जाता है तो कोई ईवेंट प्राप्त करने का कोई तरीका?

अद्यतन

घटना बिल्कुल आग नहीं करता है जब बैकस्पेस, दर्ज किया गया है कम से कम IE9 में।

+1

जब घटना माना निकाल दिया जा रहा है दृष्टिकोण? क्या आप 'कीप' घटना का उपयोग नहीं कर सकते? – elclanrs

+0

ऑनपूट ईवेंट का व्यापक रूप से उपयोग नहीं किया जाता है लेकिन ऐसा प्रतीत होता है: https://developer.mozilla.org/en/DOM/window.oninput – j08691

+1

FYI, 'इनपुट' ईवेंट IE6,7 में काम नहीं करता है , 8। – jfriend00

उत्तर

8

जहां तक ​​मुझे पता है, "इनपुट" वह ईवेंट नहीं है जिसका आप उपयोग करना चाहते हैं। के बाद से "इनपुट" "बदलाव" के अनुरूप है, यह एक बुरा परिणाम उपज जाता है जब अपने स्ट्रिंग 0 वर्ण, का उपयोग keyup बजाय

$("input#myId").bind('keyup', function (e) {  
    // Do Stuff 
}); 
+0

https://developer.mozilla.org/en/DOM/window.oninput – j08691

+0

आह, बहुत रोचक। धन्यवाद – Kristian

+2

मैं यहां गलत हो सकता हूं, लेकिन मुझे नहीं लगता कि आप कह सकते हैं कि कीप "वह घटना है जिसका आप उपयोग करना चाहते हैं" क्योंकि कुंजीपटल के विपरीत इनपुट, माउस के साथ कट और पेस्ट में किसी भी इनपुट का पता लगाता है। हमारे पास यहां क्या है कि फ़ायरफ़ॉक्स और आईई इस बात से असहमत हैं कि बैकस्पेस या डिलीट को "इनपुट" के रूप में गिना जाना चाहिए या नहीं। मैं दोनों तरफ देख सकता हूं ... मेरा अनुमान है कि एरिक जे वास्तव में एक बदलाव की घटना चाहता है जो बिना इंतजार के आग लग जाएगा जब तक कि नियमित परिवर्तन घटना की तरह फोकस न हो जाए। मुझे पता नहीं है कि उस सवाल का जवाब क्या है। – ctb

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