2012-03-13 7 views
5
events: { "paste .youtube-url" : "addUrl" } 

addUrl: function(){ 
    console.log(this.$(".youtube-url").val()); 

तो मैं पाठ बॉक्स पहली बार में "बुरा" पेस्ट कहना देता हैपेस्ट घटना निकाल दिया जाता से पहले पाठ पाठ बॉक्स में है

सांत्वना उत्पादन: (एक खाली स्ट्रिंग)

तो अगर मैं पेस्ट बुरा

बजाय

: "सांकेतिक शब्दों में बदलनेवाला"

सांत्वना उत्पादन की तरह कुछ संलग्न बॉक्स "बैडकोडर" के अंदर क्या है, मुझे लगता है कि यह इसलिए है क्योंकि छद्म पेस्ट ईवेंट पाठ डालने से पहले निकाल दिया जाता है।

उत्तर

8

paste ईवेंट का उपयोग करने के बजाय आप keyup ईवेंट का उपयोग कर सकते हैं जो किसी को चिपकाता है लेकिन इनपुट के मूल्य के बाद ही आग लगती है।

अद्यतन

@Micah (और @JohnnyO) से अच्छा टिप्पणी। यहाँ एक ठीक मैं काम करने के लिए मिल गया है:

$('input').on('paste', function() { 
    var that = this; 
    setTimeout(function() { 
     alert(that.value); 
    }, 0); 
});​ 

यह एक समय समाप्ति सेट तो कोड है कि इनपुट के मूल्य पढ़ता केवल स्टैक में कोड के बाकी किया गया है चलाने के बाद चलाया जाता है। मैंने केवल क्रोम 21 में परीक्षण किया है लेकिन शून्य-टाइम-टाइमआउट चाल चल रहा है।

डेमो: http://jsfiddle.net/H4K4R/

+1

नोट: जैसा कि # जॉनीनो का उल्लेख है कि संदर्भ मेनू का उपयोग करने के लिए संदर्भ मेनू का उपयोग किया जाता है, तो 'कीपअप' घटना आग नहीं होगी। – Micah

+0

@ मिकाह अच्छा पकड़ो। मैंने ** एक और विधि के साथ ** मेरा जवाब अपडेट किया। – Jasper

+0

'घटनाएं: {"बदलें। यूट्यूब-यूआरएल": "addUrl"}' एक और विकल्प हो सकता है लेकिन जब तक फोकस टेक्स्टबॉक्स छोड़ नहीं जाता है तब तक ईवेंट आग नहीं होता है। – Micah

4

@Jasper द्वारा जवाब केवल जब चिपकाने कुंजीपटल से काम करता है। पेस्ट करने के लिए माउस और संदर्भ मेनू का उपयोग करते समय, आपको एक कीप ईवेंट नहीं मिलेगा। देखने के लिए सबसे अच्छी घटना 'इनपुट' घटना है। दुर्भाग्यवश, 9 से पहले आईई संस्करणों के लिए, आपको 'संपत्ति' ईवेंट के बजाय देखना होगा क्योंकि वे 'इनपुट' का समर्थन नहीं करते हैं। 'propertychange' बबल नहीं होता है, इसलिए आप इस घटना को वायरस करने में सक्षम नहीं होंगे जैसे कि आप बैकबोन का उपयोग कर रहे हैं, और इसके बजाय इसे सीधे '.youtube-url' तत्व से बांधना होगा।

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