मैं "देर से" उत्तर जोड़ना चाहता हूं, क्योंकि मैंने संघर्ष किया change, keyupऔर searchआज, और शायद जो मुझे अंत में मिला वह दूसरों के लिए भी उपयोगी हो सकता है। मूल रूप से, मेरे पास एक खोज-प्रकार-प्रकार का पैनल है, और मैं बस छोटे एक्स (क्रोम और ओपेरा के तहत, एफएफ इसे लागू नहीं करता है) के प्रेस पर ठीक से प्रतिक्रिया करना चाहता था, और परिणामस्वरूप सामग्री फलक को साफ़ करें।
मेरे पास यह कोड था:
$(some-input).keyup(function() {
// update panel
}
$(some-input).change(function() {
// update panel
}
$(some-input).on("search", function() {
// update panel
}
(वे अलग हैं क्योंकि मैं जाँच करना चाहता था कि कब और किन परिस्थितियों में प्रत्येक को बुलाया गया था)।
यह पता चला है कि क्रोम और फ़ायरफ़ॉक्स अलग-अलग प्रतिक्रिया करते हैं। विशेष रूप से, फ़ायरफ़ॉक्स change"इनपुट में हर परिवर्तन" के रूप में व्यवहार करता है , जबकि क्रोम इसे "जब फोकस खो जाता है और सामग्री बदल जाती है" के रूप में मानता है। इसलिए, क्रोम पर "अपडेट पैनल" फ़ंक्शन को एक बार बुलाया गया था, एफएफ पर प्रत्येक कीस्ट्रोक के लिए दो बार (एक में keyup, एक में change)
इसके अतिरिक्त, छोटे X (जो FF के तहत मौजूद नहीं है) के साथ फ़ील्ड को साफ़ करते हुए searchChrome: नहीं keyup, नहीं के तहत ईवेंट को निकाल दिया गया change।
निष्कर्ष? inputइसके बजाय उपयोग करें :
$(some-input).on("input", function() {
// update panel
}
यह मेरे द्वारा परीक्षण किए गए सभी ब्राउज़रों के तहत समान व्यवहार के साथ काम करता है, इनपुट सामग्री में हर बदलाव (माउस के साथ कॉपी-पेस्ट, स्वतः पूर्णता और "एक्स" शामिल है) पर प्रतिक्रिया करता है।
onchangeघटना नहीं है?