2009-03-13 4 views
9

का पता लगाने और मैं, उस घटना के लिए एक पैरामीटर पारित करने के लिए की जरूरत है, उदाहरण के लिए: कि समारोह मैं की जरूरत है तो फिरफ़ायरफ़ॉक्स OnKeyDown एक इनपुट पाठ मैं onkeydown घटना पर कब्जा करने के एक समारोह कॉल करने की आवश्यकता से दबाया कुंजी

<input type="text" onkeydown="TextOnKeyDown('myPrefix');" />... 

यह जानने के लिए कि कौन सी कुंजी दबाई गई थी। मैं

function TextOnKeyDown(prefix) { 
    var key = event.keyCode; 
    ... 
} 

यह आईई में एक आकर्षण की तरह काम करता है, लेकिन फ़ायरफ़ॉक्स में नहीं। और

<input type="text" onkeydown="detectKey(event)"/> 
... 
function detectKey(e){ 
    var key = (document.all) ? e.keyCode : e.which; 
    ...  
} 

लेकिन मैं अपने पैरामीटर पारित करने के लिए नहीं मिल सकता है के लिए आवश्यक घटना पैरामीटर: मैं पढ़ा है फ़ायरफ़ॉक्स के लिए आप, करने के लिए कुछ इसी तरह हैंडलर के लिए एक तर्क पारित और फिर इसका इस्तेमाल कुंजी प्राप्त करने के लिए है कि फ़ायरफ़ॉक्स। कोई सुझाव?

उत्तर

7

प्रस्तावित समाधानों में से कोई भी काम नहीं किया गया था जो मुझे आवश्यक था मेरे स्वयं के पैरामीटर को फ़ायरफ़ॉक्स के लिए आवश्यक "ईवेंट" पैरामीटर के अलावा कुंजीकोड प्राप्त करने के लिए जोड़ा गया था। वैसे भी मदद की, धन्यवाद दोस्तों। मैं भविष्य पाठकों के लिए अंतिम समाधान भाषा में: यह किसी तरह

function TextOnKeyDown(prefix, evt) {  
    var key = (evt.which) ? evt.which : evt.keyCode; 
... 
} 

:

<input type="text" onkeydown="TextOnKeyDown('myPrefix', event);" /> 

और हैंडलर:

अंत में मैं सिर्फ फोन करने वाले के लिए "घटना" पैरामीटर जोड़ने का था पहले काम नहीं किया, मुझे नहीं पता क्यों।

0

आप arguments[0] उपयोग कर सकते हैं:

<input type="text" onkeydown="detectKey(arguments[0])"/> 

वहाँ में आईई घटना प्राप्त करने के लिए भी आप कर सकता है:

<input type="text" onkeydown="detectKey(arguments[0] ? arguments[0] : event)"/> 

या अपने detectKey(e) समारोह को बदलने की जाँच करने के लिए यदि e सेट किया गया है और event का उपयोग करता है, तो यह।

7

मैं फ़ायरफ़ॉक्स में इस का उपयोग करें और यह काम करता है:

<input .... onkeypress="return isNumberKey(event);"> 

और फिर js funcion:

function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : evt.keyCode 
    if(charCode==37||charCode==39||charCode==46)return true; 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
    return false; 

    return true; 
} 
9

मैं इस कल लिखा था, दोनों एफएफ और IE =>

//execute this during initialization 
document.onkeydown = function(event) { 
    var holder; 
    //IE uses this 
    if(window.event) { 
     holder = window.event.keyCode; 
    } 
    //FF uses this 
    else { 
     holder = event.which; 
    } 
    keyz(holder); 
} 

function keyz(key) { 
    if(key === /*desired code*/) { 
     /*execute stuff*/ 
    } 
} 
में काम करता है

आप [your input] के साथ document.onkeydown को प्रतिस्थापित करना चाहते हैं .onkeydown

1

यहाँ एक और मोड़ है कि घटना और कीकोड हो रही जोड़ती है:

function calledOnKeypress(winEvent) { 
    var keyCode; 
    // event passed as param in Firefox, not IE where it's defined as window.event 
    if(!winEvent) { 
     winEvent = window.event; 
     keyCode = winEvent.keyCode; 
    } 
    else { // ff 
     keyCode = winEvent.which; 
    } 
} 
संबंधित मुद्दे