2011-03-11 13 views
14

इनपुट करने के लिए बाध्य करें, ठीक है, इसलिए मेरे पास एक इनपुट बॉक्स है और मुझे हर बार चीजों को बदलने की ज़रूरत है, मुझे माउस पेस्ट के लिए इसे करने में परेशानी हो रही है। यहां कोड है जो मेरे पासJquery/JS बाइंड "पेस्ट" ईवेंट हैंडलर को टेक्स्टबॉक्स

$("#attack-navy"+unit.ID+"-number").bind('paste', function(){ 
      alert("paste detected"); 
      $("#attack-max-capacity").text(getMaxCapacity()); 
}); 

getMaxCapacity() फ़ंक्शन रिटर्न नंबर अब * 30 में दर्ज किया गया है;

यहाँ परिदृश्य है जब
1: मैं पेस्ट 3, यह नहीं बदलेगी (मैं अभी भी सतर्क देखें)
2: फिर जब मैं पेस्ट 5, यह 90 (3 * 30)
3 हो जाएगा : तो अगर मैं 10 पेस्ट करता हूं तो यह 150 (5 * 30) होगा, और इसी तरह।

मुझे लगता है कि पेस्ट वास्तव में होने से पहले हैंडलर कर रहा है। हम क्या कर सकते हैं इसपर कोई विचार? (.change काम नहीं करेगा, जैसे ही आप पेस्ट करेंगे)

उत्तर

45

आपको input और propertychange ईवेंट को संभालना चाहिए।
Demo

+0

+1 अच्छा, मैं इस बारे में पता नहीं था! – nyuszika7h

+0

क्या संपत्ति के लिए मुझे फोकस छोड़ने की आवश्यकता होगी? – Ave

+0

मैंने कोशिश की। बाइंड ('propertychange', function() {... काम नहीं करता – Ave

3

आप सही हैं। पेस्ट इवेंट इनपुट परिवर्तन के मूल्य से पहले फायरिंग कर रहा है। समय समाप्त में अपने हैंडलर लपेटकर का प्रयास करें:

+0

शायद काम करेगा लेकिन "इनपुट" बाध्यकारी होगा! – Ave

+0

ग्रेट! बहुत उपयोगी –

1

.live साथ बाँध घटना बदलें और यह काम करना चाहिए, इस तरह:

$("#attack-navy"+unit.ID+"-number").live('paste', function(){ 
      alert("paste detected"); 
      $("#attack-max-capacity").text(getMaxCapacity()); 
}); 
संबंधित मुद्दे