2011-12-19 16 views
5

मैं इस के लिए मैं कोड लिखा हैप्री-पेस्ट पर jquery आग में इवेंट पेस्ट क्यों करें?

  • पद गणना
  • प्रयुक्त घटनाक्रम बदलें, KeyUp और पेस्ट करें

KeyUp और घटनाक्रम बदले के लिए ट्विटर के समान पाठ बॉक्स बनाने के लिए कोशिश कर रहा हूँ, ठीक काम कर रहे हैं लेकिन पेस्ट इवेंट थोड़ा अजीब है, जब मैं टेक्स्टरेरा में कुछ पेस्ट करता हूं तो उस समय शब्द गणना गिनती नहीं बदलती है, कुछ डिबगिंग के बाद मुझे पता चला कि पेस्टबॉक्स टेक्स्टबॉक्स पर कुछ चिपकाने से पहले पेस्ट इवेंट फायर हो जाता है। मुझे नहीं पता कि वे ट्विटर में इसे कैसे संभालेंगे। पेस्ट घटना काम गिनती कि उदाहरण पर परिवर्तन नहीं होता है की पूर्व पेस्ट प्रकृति के कारण

'click #textboxId' : 'submitQuestion' 
'keyup #textboxId' : 'wordCounter' 
'change #textboxId' : 'wordCounter' 
'paste #textboxId' : 'wordCounter' 

wordCounter: -> 
    #Code for Word Count# 

: घटनाओं: यहाँ मेरी कोड है।
आपके सुझाव और सहायता की सराहना की जाएगी, आपके समय के लिए धन्यवाद।

+0

घटना को संभाल नहीं बदलता है इन सभी – aWebDeveloper

+0

@WebDeveloper नहीं, परिवर्तन घटना पेस्ट (तुरन्त), हम कुछ चिपकाने के बाद पाठ बॉक्स के बाहर क्लिक करना पर गिनती अपडेट नहीं होता। –

+0

@WebDeveloper - समस्या सही माउस बटन या टूलबार पेस्टिंग है। मैं वास्तव में हैरान था कि 'परिवर्तन' घटना इस पर ध्यान नहीं दे रही थी। – mrtsherman

उत्तर

8

इस उदाहरण को देखें।

http://jsfiddle.net/urEhK/1

$('textarea').bind('input propertychange', function() { 
    $('#output').html($(this).val().length + ' characters'); 
}); 

यही व्यवहार बहुत अजीब था। आपको लगता है कि उन घटनाओं में से एक इसे ठीक से पकड़ लेगा? मुझे आश्चर्य हुआ कि Google के माध्यम से इसके लिए और अधिक जवाब नहीं थे।

+0

में बदलने की कोशिश करता है, जब आप फ़ील्ड छोड़ते हैं (टैबबिंग या उस पर क्लिक करके) केवल ईवेंट ट्रिगर होता है। – nnnnnn

+0

@mrtsherman - धन्यवाद। मैंने पहले ईवेंट को बदलने की कोशिश की और हां यह अजीब बात है कि टेक्स्टबॉक्स में पेस्ट करने के बाद ही गिनती बदल गई जब मैं बॉक्स के बाहर क्लिक करता हूं। असल में जब यह काम नहीं कर रहा था तो कहीं ऐसा पाया गया कि पेस्ट इवेंट इसे संभाल सकता है, लेकिन परिणाम वही था। वैसे भी मैं चेंज और कीप इवेंट का उपयोग कर इसे फिर से कोशिश करूंगा। एक बार फिर धन्यवाद। –

+0

@nnnnnn - आप सही हैं। – mrtsherman

2
function update()  
    { 
     alert($textbox.val().length); 
    } 


    var $textbox = $('input'); 
    $textbox.bind('keyup change cut paste', function(){ 
     update(); //code to count or do something else 
    }); 
    // And this line is to catch the browser paste event 
    $textbox.bind('input paste',function(e){ setTimeout(update, 250); }); 
+0

@ वेब डेवलपर- कॉफ़ीस्क्रिप्ट में सिंटैक्स परिवर्तन अंतर केवल कुछ और नहीं है। धन्यवाद। –

+0

यह काम करता है अगर उसने सही जवाब के रूप में मेरा जवाब दिया – aWebDeveloper

0

अब आप बाँध() see this post के बजाय पर इस्तेमाल करना चाहिए()। नामित फ़ंक्शन बनाने के लिए भी अनावश्यक है, आप केवल एक अनाम फ़ंक्शन बना सकते हैं।

$('#pasteElement').on('paste', function() { 
    setTimeout(function(){ 
     alert($('#pasteElement').val()); 
    }, 100); 
}); 
0

आप एक बात यह है कि सबसे पहले मूल डेटा प्राप्त कर सकते हैं। तो आप ईवेंट पेस्ट डेटा प्राप्त कर सकते हैं और उन्हें जोड़ सकते हैं।

$("#id").on("paste keypress ",function(event){ 
       // eg. you want to get last lenght 
       var length=$("#id").val().length; 
       if(event.type == "paste"){ 
        //then you can get paste event data.= 

length+=event.originalEvent.clipboardData.getData('text').length; 
       } 


      });` 
+0

कोड कॉपी पेस्ट शब्द सीमा घटना के लिए सबसे अच्छा है और शब्दों की सीमा सीमित है। – Bachas

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