2010-10-02 15 views
10

मेरे पास <input> है जिसमें onkeydown इनलाइन ईवेंट हैंडलर है। इस हैंडलर में, मैं एक फ़ंक्शन कॉल करना चाहता हूं और इसमें एक विशेष पैरामीटर पास करना चाहता हूं - ईवेंट डेटा।इनलाइन ईवेंट हैंडलर में ईवेंट डेटा पास करना

जब मैं घटनाओं हैंडल करना चाहते हैं (उदाहरण के लिए onmousemove) पूरे दस्तावेज़ के लिए, मैं निम्नलिखित कोड का उपयोग करें:

document.onmousemove=function(e) { 
// here I can make a good use of the 'e' variable, 
// for example extract the mouse coordinates from it 
} 

और यह काम करता है (हालांकि मैं कहाँ e चर पता नहीं है - घटना डेटा - से आता है)।
लेकिन इस बार मैं उपरोक्त वर्णित <input> के लिए केवल फ़ंक्शन का उपयोग करना चाहता हूं।
मुझे ईवेंट डेटा को फ़ंक्शन में पास करने की आवश्यकता है ताकि यह दबाए गए कुंजी का कोड प्राप्त कर सके। और मैं इसे उस इनलाइन इवेंट हैंडलर में करना चाहता हूं। मैं एक समारोह बना लिया है:

function myfunc (e) { 
    var evt=window.event?event:e; 
    var code=evt.keyCode; 
    alert (code); 
} 

और इन सभी विधियों की कोशिश की:

<input onkeydown="myfunc(this)">

<input onkeydown="myfunc(this.onkeydown)">

<input onkeydown="myfunc(onkeydown)">

लेकिन उनमें से कोई भी काम किया, अलर्ट विंडो रखा "अपरिभाषित" प्रदर्शित करना।
मैंने Google में अपनी समस्या का समाधान ढूंढ लिया, लेकिन मुझे कुछ भी नहीं मिला जो इसे हल करने में मेरी मदद कर सके।

उत्तर

14

<input onkeydown="myfunc(event)">

function myfunc (e) { 
    e = e || window.event; 
    var code = e.keyCode; 
    alert (code); 
} 
+0

तुम सच में बहुत धन्यवाद :) मैं वैश्विक 'event' चर के बारे में पता नहीं था। अब यह पूरी तरह से काम करता है, धन्यवाद। – rhino

+0

अच्छी तरह से आपको जावास्क्रिप्ट इवेंट हैंडलिंग में आने से पहले वास्तव में एक पेपर पढ़ना चाहिए क्योंकि यह विशेष रूप से यदि आप IE से निपटते हैं तो यह गन्दा हो सकता है। वैसे भी, मुझे खुशी है कि मैं मदद कर सकता हूं। – galambalazs

+1

आई 7 और आईई 8 पर काम नहीं करता है – Luckyy

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