2009-11-02 17 views
5

के साथ काम नहीं करता है मैंने एक jQuery चरित्र काउंटर लिखा है, जब मैं टाइप करता हूं तो यह काम करता है, लेकिन जब पाठ चिपकाया जाता है। फ़ंक्शन पेस्ट पर निष्पादित किया जाता है, लेकिन गिनती नहीं बदली जाती है। मुझे यकीन नहीं है कि val() फ़ंक्शन सही है या वास्तव में डोम के साथ सिंक में है। कोई विचार?jQuery - चार काउंटर पेस्ट इवेंट

counter = function() { 
    $j("strong#status-field-char-counter").text($j("#Panel1messagesmessage").val().length); 
    alert('event'); 
}; 


$j("textarea").keyup(counter); 
$j("textarea").bind('paste', counter); 
$j("#Panel1messagesmessage").bind('copy', counter); 
$j("#Panel1messagesmessage").bind('delete', counter); 
+0

'पेस्ट' http://docs.jquery.com/Events/bind ... भी एक वैध घटना के रूप में सूचीबद्ध नहीं है, , आप 'bind() 'के दूसरे पैरामीटर को एक स्ट्रिंग के रूप में ईवेंट जोड़ सकते हैं जिसमें प्रत्येक ईवेंट को' $ ('# selector') से अलग किया जाता है। बाइंड ('माउसओवर' पर क्लिक करें, फ़ंक्शन() {})' – artlung

+0

यहां असमर्थित घटनाओं को संबोधित करने वाला एक प्रश्न: http://stackoverflow.com/questions/237254/how-do-you-handle-oncut-oncopy-and-onpaste-in-jquery – artlung

उत्तर

7

पाठ क्षेत्र सामग्री के बजाय उन सब को पकड़ने की कोशिश कर के, कई तरीकों से में बदला जा सकता है, बस की तरह

$(function() { 
    window.charCount = 0; 
    setInterval(function() { 
     var c = $("textarea").val().length; 
     if(c != window.charCount) { 
     window.charCount = c; 
     $("span").html(window.charCount); 
     } 
    }, 500); 
}) 
3

एक नियमित है कि सामग्री हर 0.5 सेकंड की जाँच करता है, स्थापित मैं आमतौर पर keyup का उपयोग change

change ईवेंट फोकस करता है जब टेक्स्टबॉक्स फोकस खो देता है, लेकिन केवल तभी फोकस प्राप्त होने के बाद मान संशोधित किया गया था।

+0

मैं डी आईडी 'कीडाउन' के साथ आज़माएं, लेकिन 'कीप' अच्छी तरह से चाल चल रहा है, _paste_ के लिए भी बहुत कुछ। – Irfan

2

त्वरित खेलने के बारे में:

$("#textarea").change(function() { 
      $("#status-field-char-counter").text($("#textarea").val().length); 
    }).keyup(function() { 
     $("#status-field-char-counter").text($("#textarea").val().length); 
    }); 

एचटीएमएल

<p id="status-field-char-counter">here</p> 
<input id="textarea" type="text" /> 
संबंधित मुद्दे