2009-12-20 9 views
12

क्या कोई जावास्क्रिप्ट फ़ंक्शन हर एचटीएमएल बटन को दबाए जाने वाले हर मिलीसेकंड को दोहराता है? यह बहुत अच्छा होगा अगर यह मानक जावास्क्रिप्ट के साथ किया जा सकता है, लेकिन jQuery या jQuery प्लगइन का उपयोग करना भी बहुत अच्छा होगा।माउस दबाए जाने पर जावास्क्रिप्ट दोहराएं

उत्तर

24

mousedown() ईवेंट पर, यह कोड एक दोहराव टाइमर (इस उदाहरण में हर 500ms) शुरू होता है जिसे mouseup() ईवेंट होने पर रद्द कर दिया जाता है। यह आप क्या चाहते हैं के लिए अनुकूल होना चाहिए:

var intervalId; 
$("#button").mousedown(function() { 
    intervalId = setInterval(do_something, 500); 
}).mouseup(function() { 
    clearInterval(intervalId); 
}); 

function do_something() { 
    // whatever 
} 

टाइमर साफ करने के बारे में अधिक जानकारी के लिए setInterval() देखें।

+1

यदि आप तुरंत घटना होने की इच्छा रखते हैं, और प्रत्येक 500 मिलीसेकंड, बस सेट इंटरवल को कॉल करने से पहले 'do_something()' को कॉल करें। –

+0

@TylerCollier इंगित करने के लिए धन्यवाद। फिर यह क्लिक इवेंट और बार-बार कार्रवाई की तरह काम करता है। बेहद सुविधाजनक। मेरे मामले में मुझे पैरामीटर पास करना पड़ा, इसके लिए आपको एक अनाम फ़ंक्शन असाइन करना होगा: 'setInterval (function() {myfunction (valueA, valueB);}, 500); ' –

+0

@TylerCollier कोई मुझे बता सकता है कि क्यों नहीं यह रुक गया? http://jsfiddle.net/oxpku7f1/1/ – Arbaaz

5

मैं माउस पर कॉल किए जाने वाले फ़ंक्शन के भीतर जावास्क्रिप्ट फ़ंक्शन setInterval() का उपयोग करूंगा।

<input type="button" id="button" onmousedown="inter=setInterval(startAction, 1*1000);" 
onmouseup="clearInterval(inter);" value="click here" /> 

<script type="text/javascript"> 
    function startAction(){ 
     //whatever you want done 
    } 
</script> 
4

मुझे ऊपर सूचीबद्ध दोनों समाधानों के साथ एक समस्या दिखाई देती है।

onmouseup केवल तब ट्रिगर किया जाता है जब बटन बटन पर होने पर जारी किया जाता है। यदि उपयोगकर्ता माउस को नीचे रखता है तो उसे जारी करने से पहले माउस को दूर ले जाता है तो clearInterval कभी नहीं निकाल दिया जाता है और इसलिए do_something हमेशा के लिए आग लग जाएगा।

आप किसी अन्य घटना, "onmouseout", वह भी clearInterval कॉल जोड़ने के लिए की आवश्यकता होगी।

+1

सच है लेकिन कृपया नमूना कोड जोड़कर इसे पूरा उत्तर दें। –

3
var intervalId; 
$("#button").mousedown(function() { 
    intervalId = setInterval(do_something, 500); 
}).mouseup(function() { 
    clearInterval(intervalId); 
}).mouseleave(function() { 
//this should help solve the problem that occurs when the mouse leaves the button while pressed down 
    clearInterval(intervalId); 
}); 

function do_something() { 
    // whatever 
} 
संबंधित मुद्दे