2009-03-29 14 views
22

मेरे पास <input type=text /> के साथ एक फॉर्म है और मैं अंतिम कुंजी प्रेस के 5 सेकंड के बाद जावास्क्रिप्ट फ़ंक्शन को कॉल करना चाहता हूं, और हर बार जब कोई नई कुंजी दबाई जाती है, तो इस टाइमर को चाहिए रीसेट करें और केवल 5 सेकंड के बाद फ़ंक्शन को कॉल करें।अंतिम कुंजी प्रेस के 5 सेकंड के बाद जावास्क्रिप्ट फ़ंक्शन को कॉल करें

मैं यह कैसे कर सकता हूं?

मैं jQuery का उपयोग कर रहा हूं।

धन्यवाद!

+0

आप दबाया जब उपयोगकर्ता इनपुट क्षेत्र वर्तमान में सक्रिय है पिछले कुंजी मतलब कार्य करें:

यहाँ पूरा कोड है? –

उत्तर

54

कुछ इस तरह मिलना चाहिए आप आरंभ:

var timeout; 
$('input[type=text]').keypress(function() { 
    if(timeout) { 
     clearTimeout(timeout); 
     timeout = null; 
    } 

    timeout = setTimeout(myFunction, 5000) 
}) 
+0

यह कमाल है, धन्यवाद! – Paulo

+0

बस याद रखें कि टाइमआउट फ़ंक्शन मिलीसेकंड में काम करता है। यही कारण है कि उन्होंने 5000 का उपयोग किया। –

+4

तकनीकी रूप से शून्य की सेटिंग अनिवार्य है। – cletus

0

हालांकि यह jQuery का उपयोग नहीं करता, तो आप भी debouncing समारोह पर एक नज़र वर्णित here हो सकता था।

स्टीव

4

यह महान है, लेकिन याद रखें कि आप समय समाप्ति स्पष्ट करने के लिए दस्तावेज लोड के बाद और समारोह भार के बाद इस कोड को सक्रिय करना होगा।

var timeout; 
$(document).ready(function(){ 
    $('input[type=text]').keypress(function() { 
     if(timeout) { 
      clearTimeout(timeout); 
      timeout = null; 
     } 
     timeout = setTimeout(myFunction, 5000); 
    }); 
}); 

var myFunction = new function() { 
    alert('myFunction is running'); 
    clearTimeout(timeout); // this way will not run infinitely 
} 
संबंधित मुद्दे