2010-06-20 12 views
9

क्या कोई इनपुट क्षेत्र में लाइव बदलावों का पता लगाने के लिए क्रॉस-ब्राउज़र तरीका है?क्रॉस-ब्राउजर जावास्क्रिप्ट इनपुट लाइव चेंज/पेस्ट डिटेक्शन

लाइव, मेरा मतलब यह नहीं है कि जब फ़ील्ड फोकस खो देता है, और अगली कीप्रेस पर नहीं, और इसी तरह। तुरंत या ऐसा कुछ। तो मैं पर jQuery और .change(), .keyup(), .bind('paste') की

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

काम कर पाने के लिए trickiest बात इनपुट क्षेत्र के माउस हेरफेर है - पाठ का चयन और यह आगे बढ़ (जो अनिवार्य रूप से कट और पेस्ट किया जाता है), राइट क्लिक करें और पेस्ट करने या काटने, आदि किसी कारण से भी .mousedown() और .mouseup() इसे काटते प्रतीत नहीं होते हैं।

एकमात्र क्रॉस-ब्राउजर समाधान मैं अभी सोच सकता हूं कि प्रत्येक 100-या-तो मिलीसेकंड इनपुट फ़ील्ड मान की जांच करें और संग्रहीत मूल्य के विरुद्ध मान की तुलना करें। लेकिन यह घटना-आधारित समाधान इतने करीब आता है जब यह ओवरकिल की तरह लगता है।

क्या कोई jQuery प्लग-इन है जो पहले से ही करता है? या यह हासिल करने के लिए कोई और तरीका है?

+0

jQuery उस संबंध में क्रॉस ब्राउज़र संगत होना चाहिए, कम से कम उन ब्राउज़रों और उनके संस्करण http://docs.jquery.com/Browser_Compatibility पर पाए गए; यदि ऐसा नहीं है तो मैं सुझाव दूंगा कि आप एक बग फाइल करें। – azatoth

+0

@aza मुझे बिल्कुल यकीन नहीं है कि कौन सा jQuery ईवेंट हेल्पर्स जो मैं चाहता हूं (इनपुट फ़ील्ड के मूल्य में किसी भी बदलाव पर तत्काल अपडेट) प्राप्त करने के लिए उपयोग करना है, क्योंकि इनपुट फ़ील्ड खोने पर '.change()' निकाल दिया जाता है। ध्यान देते हैं। क्या आप जानते है? – javascripteroo

+0

यहां एक साधारण समाधान का वर्णन किया गया है: http://whattheheadsaid.com/2010/09/effectively-detecting-user-input-in-javascript – biziclop

उत्तर

2

अपने परिवर्तन और कुंजी हैंडलर को पूरा करने के लिए, आप cut/copy/paste के लिए हैंडलर जोड़ सकते हैं। वे फ़ायरफ़ॉक्स> = 3, आईई, सफारी और क्रोम में काम करते हैं (लेकिन ओपेरा/कॉन्करर में नहीं)।

क्या आपके उपयोग के मामले में सब कुछ शामिल होगा?

+0

वादा करता है। हालांकि IE8 में ड्रैग-एंड-ड्रॉप परिवर्तनों का पता नहीं लगा है। धन्यवाद, आगे की जांच करेंगे। 'परंपरागत' घटना संलग्न विधि 'elm [' exchange '] = fn' है? – javascripteroo

+0

@javascripteroo: जानना अच्छा है, आईई 8 के बारे में। हां, यह पारंपरिक मॉडल है (elm.onchange = fn जैसा ही), यहां अधिक जानकारी: http://www.quirksmode.org/js/events_tradmod.html –

1

ब्राउज़र पर निर्भर करता है कि आपको समर्थन करने की आवश्यकता है, आप HTML5 के oninput का उपयोग कर सकते हैं।
निगरानी किए गए इनपुट में परिवर्तन होने पर यह तुरंत आग लग जाती है। JQuery में आप बस करेंगे:

$('#my-input').bind('input', function(e) { 
    console.log("#my-input's value changed"); 
}); 
+1

'oninput' ब्राउज़र समर्थन: http: //blog.danielfriesen। नाम/2010/02/-16/एचटीएमएल 5-ब्राउज़र-भूलभुलैया-oninput-समर्थन / – Dan

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