2013-03-03 5 views
8

मैं पकड़ने कर रहा हूँ $('selector').on('input', function(event) { ... });jQuery event.preventDefault() का उपयोग कर ('इनपुट') पर साथ

तब मैं परीक्षण करने के लिए क्या चिपकाया गया है कोशिश कर रहा हूँ और अगर यह प्रमाणीकरण में सफल नहीं होता है, को रद्द साथ पेस्ट घटनाओं event.preventDefault() के साथ पेस्ट करें। दुर्भाग्यवश, जब तक श्रोता समारोह निष्पादित किया जाता है, तब तक पाठ को पहले ही चिपकाया जा चुका है और event.preventDefault() कुछ भी नहीं करता है।

तो पेस्ट घटनाओं को पकड़ने का एक अच्छा तरीका क्या है, और यदि चिपकाया गया है तो यह सत्यापित नहीं होता है, पेस्ट को पूर्ववत/रोकें?

मुझे पता है कि मैं .on('paste', function(event) { ... }) का उपयोग कर सकता हूं, लेकिन यह मुझे पेस्ट के बाद चिपकने वाला या इनपुट तत्व की सामग्री नहीं देता है, जब तक कि मैं कुछ मिनट प्रतीक्षा समय के साथ setTimeout() का उपयोग नहीं करता, और मैं चाहता हूं setTimeout() का उपयोग करने से बचें।

+0

क्या आप एक जेएसफ़िल उदाहरण बना सकते हैं? – j08691

+0

'event.preventDefault() 'डिफ़ॉल्ट क्रिया को रोकता है, और जब' इनपुट 'ईवेंट को बाध्यकारी होता है, तो यह वास्तव में इनपुट में कुछ टाइप करने या पेस्ट करने से नहीं रोकता है? चिपकाए गए सामग्री से मूल्य को कैश करते समय, आपको इसे मानने के लिए इसे स्थगित करना होगा, लेकिन "कुछ मिनट" नहीं, टाइमआउट को शून्य पर सेट करें, और इसे अभी भी काम करना चाहिए। – adeneo

+0

मुझे लगता है कि पेस्ट पर इनपुट के मूल्य को कैप्चर करने और 'मिनट' के बजाय मान्य करने के लिए' 100ms' टाइमआउट सेट करना ठीक है। – SRy

उत्तर

-1

प्रश्न से मेरी समझ यह है कि, हमें टेक्स्ट बॉक्स के अंदर किसी भी डेटा को चिपकाने की अनुमति नहीं देनी चाहिए जब तक कि यह एक विशिष्ट सत्यापन पास न करे। event.preventDefault() का उपयोग करने के बजाय, जब हम on('input') श्रोता का उपयोग करते हुए उपयोगकर्ता इनपुट करते हैं तो मूल्य को कैप्चर कर सकते हैं और इसे विशिष्ट स्थिति के विरुद्ध सत्यापित कर सकते हैं और यदि सत्यापन विफल हो जाता है, तो टेक्स्ट बॉक्स मान खाली करें।

एचटीएमएल:

नमूना कोड (मैं चिपकाया मूल्य मुद्रण के लिए console.log() उपयोग कर रहा हूँ) (अगर हम अभी भी on('input') घटना श्रोता उपयोग करने की आवश्यकता है इस तरीके को)

<input type='text' id="selector" /> 

जेएस:

$(document).ready(function() { 
$('#selector').on('input', function (e){ 
     if(e.target.value !== "myValue"){ 
     $('#selector').val(''); 
    } 
    else{ 
     console.log(e.target.value); 
    } 
}); 
}); 
0

jquery के विनिमय ईवेंट का उपयोग करने का प्रयास करें।

यदि मूल्य आपकी स्थिति को पूरा नहीं करता है तो रिक्त मूल्य निर्धारित करें।

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