2013-02-17 16 views
31

मैं यह जानना चाहता हूं कि एंटर कुंजी दबाए जाने पर, HTML पर जो जेएस लोड के बाद इंजेक्शन दिया जाएगा।एंटर कुंजी दबाए रखने के लिए jQuery 'ऑन()' का उपयोग

बस जब प्रवेश कुंजी दबाने का पता लगाने के लिए, मैं कर सकते हैं:

$('#textfield').keydown(function (e){ 
    if(e.keyCode == 13){ 
     console.log('Enter was pressed'); 
    } 
}) 

इस कोड पर() के लिए काम करता है, लेकिन मैं इसे अक्षम है के बाद से jQuery हर बार एक कुंजी दबाने की जाँच करेगा चिंतित हूँ । क्या इस बारे में कुछ भी अक्षम है?

$('body').on('keydown','#textfield', function(event) { 
    if (event.keyCode == 13) { 
    console.log('Enter was pressed'); 
    } 
} 
+4

नहीं। सचमुच चीजों के हजारों हो सकता है जब एक कुंजी दबाने, यह सागर में एक बूंद की तरह हो जाएगा। तैयार घटना पर – JJJ

+0

कॉल स्क्रिप्ट – EnterJQ

उत्तर

45

आप पृष्ठ पर कहीं भी कुंजी दबाने पर कब्जा करना चाहते हैं -

$(document).keypress(function(e) { 
    if(e.which == 13) { 
    // enter pressed 
    } 
}); 

हर कुंजी दबाने के लिए इस तथ्य के बारे में इस जाँच करता है चिंता मत करो, यह वास्तव में किसी भी महत्वपूर्ण लोड ब्राउज़र पर डाल नहीं है।

1

व्यावहारिक रूप से, आपको इसके बारे में चिंता करने की ज़रूरत नहीं है। ब्राउज़र पहले से ही उस घटना को बुलबुला करने जा रहा है, और भले ही इसे body द्वारा फंस लिया जा सके और प्रतिनिधि कार्यक्रम से चयनकर्ता चलाया जा सके, यह JQuery के प्रदर्शन के लिए एक गहरी या कठिन व्यावहारिक जांच नहीं है, खासकर केवल आईडी के साथ चयनकर्ता।

+0

सहमत हैं। बीटीडब्लू: आपके पास वास्तव में कोई विकल्प नहीं है - कुंजी में श्रोता जोड़ने का कोई तरीका नहीं है (हालांकि यह अच्छा होगा)। –

+0

... और यहां तक ​​कि अगर एक कुंजी पर श्रोता जोड़ने का कोई तरीका होता है, तो आंतरिक रूप से ब्राउज़र को * कुंजी * दबाए जाने के लिए प्रत्येक कुंजीपटल पर प्रतिक्रिया देना होगा। – JJJ

8

तुम अब भी .on इस्तेमाल कर सकते हैं()

$(document).off('keyup#textfield'); 

$(document).on('keyup#textfield', function(event) { 
    if (event.keyCode == 13) { 
     console.log('Enter was pressed'); 
    } 
}); 
+0

आप एक जीवन बचतकर्ता हैं :) –