2015-12-21 6 views
8

मेरे पास एक टेक्स्टबॉक्स है जहां उपयोगकर्ता केवल संख्यात्मक डेटा दर्ज कर सकता है।उपयोगकर्ता इनपुट पर jQuery कीप घटना घटना lagging

$('#ssn').keyup(function() { 
    var val = this.value.replace(/\D/g, ''); 
    this.value = val; 
}); 
समस्या मैं में चल रहा हूँ

अंतराल जब एक प्रतिबंधित कुंजी पर उपयोगकर्ता चाबी, एक पल के लिए चरित्र को प्रदर्शित करता है इससे पहले कि यह साथ बदल दिया है: मैं पाठ बॉक्स के KeyUp पर निम्नलिखित समारोह का उपयोग कर रहा खाली स्ट्रिंग। और एक कुंजी दबाकर कुंजी जारी होने तक बॉक्स में वर्णों की एक धारा प्रदर्शित होगी। क्या इस व्यवहार को रोकने का कोई तरीका है? मैंने कीबाउन या कीप्रेस जैसी विभिन्न कीबोर्ड इवेंट्स की कोशिश की है और वे किसी भी बेहतर व्यवहार नहीं कर रहे थे। एक जवाब के लिए मेरी टिप्पणी परिवर्तित

बजाय keyup घटना को सुन, कि घटना के बजाय सक्रिय किया जाता है जब मूल्य परिवर्तन तो input event को सुनने https://jsfiddle.net/oxpy96g9/

+0

'अंतराल' 'Keyu के रूप में अपरिहार्य है पी 'घटना तब तक आग नहीं होती जब तक कुंजी जारी नहीं होती है और इनपुट इनपुट क्षेत्र में मूल्य जोड़ा जाता है। –

+0

1. jQuery के माध्यम से एक मंदी शुरू की गई है 2. बार-बार परिवर्तनीय घोषणा के माध्यम से एक मंदी शुरू की जाती है 3. जावास्क्रिप्ट रेगेक्स मशीन पर फायरिंग के माध्यम से एक मंदी शुरू की जाती है 4. उपयोगकर्ता द्वारा कुंजी को जारी करने के बाद आपका कोड चलता है, जो ऐसा लगता है एक मंदी सब कुछ, आपने एक गड़बड़ लिखी है। –

+3

इसके बजाय 'इनपुट' ईवेंट को सुनने का प्रयास करें ... '$ (' # ssn ')। (' इनपुट ', फ़ंक्शन() {...}); ' –

उत्तर

9

: यहाँ समस्या का एक बेला है जब कुंजी जारी की है:

Updated Example

$('#numbers').on('input', function() { 
    this.value = this.value.replace(/\D/g, ''); 
}); 
+0

का उपयोग नहीं कर सकते हैं! अच्छा कार्य! – brandelizer

+0

ओह रुको। मैंने jsfiddle में यह कोशिश की, लेकिन स्पष्ट रूप से यह लगी हुई थी, इसलिए मैंने इसे देखने के लिए संपादित करने के बाद "रन" बटन पर अपने क्लिक को संसाधित नहीं किया: डी – nicael

+0

एक आकर्षण की तरह काम किया, धन्यवाद। – noclist

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