2011-01-20 18 views
31

रोकें मैं कुंजी को टेक्स्टरेरा में डालने से रोकने की कोशिश कर रहा हूं, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।jQuery: एंटर कुंजी

$('#comment').keyup(function(event) { 
    if (event.text.charCodeAt() == '10') { 
    event.preventDefault(); 
    } 
}); 
+0

मुझे नहीं लगता कि घटना ट्रिगर हो रही है, मैं कैसे बता सकता हूं कि '$ ('# टिप्पणी') सही तरीके से क्या है? –

+1

परिवर्तन घटना में हुक करने के साथ-साथ कीप/डाउन/दबाएं कि हर किसी ने प्रदर्शित किया है। यहां हर समाधान के साथ, लोग अभी भी उन्हें हटाने की आवश्यकता को रोकने के लिए लाइन टेक्स्टरेक में लाइनब्रेक पेस्ट कर सकते हैं;) –

उत्तर

65

मैं jsfiddle.net, जहाँ आप इस कोड

हर कोई सही जवाब :)

$('#comment').keypress(function(event){ 

    if (event.keyCode === 10 || event.keyCode === 13) 
     event.preventDefault(); 

    }); 
है कोशिश कर सकते हैं पर बहुत कम प्रदर्शन लिखा है
+2

@ बुब्बी एलओएल ने किसी और के कोड को jsfiddle में कॉपी-पेस्ट करने के लिए उत्तर स्वीकार कर लिया है? –

+9

बस एक नोट के रूप में; keyCode 10 की आवश्यकता है क्योंकि iPhones पर सफारी कुंजीपटल 10 भेजता है जब 0 दबाया जाता है – Ben

+0

@Ben जब मैंने परीक्षण किया तो यह 10 के बजाय 13 भेजता है। क्या इसके बारे में कोई दस्तावेज है? मुझे एक नहीं मिल रहा है। –

1

.keypress साथ की कोशिश करो और return false का उपयोग करें;

शुभकामनाएं!

5

keydown घटना में उपयोग event.keyCode:

$('#comment').keydown(function(event) { 
    if(event.keyCode == 13) return false; 
    //carry on... 
}); 
+0

कुंजीडाउन ईवेंट क्यों नहीं? –

+0

@ Šime Vidas मुझे लगता है कि आप 'keydown' ईवेंट का उपयोग कर सकते हैं। –

3
$('#comment').keypress(function(event) { 
    if (event.keyCode == 13) { 
     event.preventDefault(); 
    } 
}); 
+0

व्हा? एंटर कुंजी के लिए कीकोड '13' है, न कि' 10'। –

+2

10 एलएफ (लाइन फीड) है और 13 सीआर (कैरिज रिटर्न) है। उसे दोनों को रोकना चाहिए। –

+1

@TomislavMarkovski: नहीं। कुंजीकोड ** हमेशा ** 13. उदाहरण देखें http://unixpapa.com/js/key.html – ThiefMaster

1

हालांकि यहां दिए गए उत्तरों किसी को कैरिज रिटर्न टाइप करने से रोकें, यह किसी को किसी को चिपकाने से नहीं रोकेगा।

आपको उन्हें हटाने के लिए टेक्स्ट (जावास्क्रिप्ट या सर्वर-साइड में) की कुछ पोस्ट प्रोसेसिंग करने की आवश्यकता होगी।

http://jsfiddle.net/we8Gm/

लेकिन सवाल यह है कि, क्यों? क्यों न केवल <input type="text"></input> का उपयोग करें जो इसे स्वचालित रूप से ख्याल रखता है क्योंकि यह एकल-पंक्ति इनपुट तत्व है?

+0

क्योंकि मुझे बॉक्स लंबा होना चाहिए, चौड़ा नहीं। चौड़ाई की 50 पीएक्स की तरह ही है। –

+0

अब मैं उत्सुक हूं कि आप किसके लिए एक लंबा पतला इनपुट उपयोग करेंगे। –

+0

अजाक्स चैट विजेट मैंने डिज़ाइन किया है, इसलिए कोई उपयोगकर्ता संदेश सबमिट करने के लिए एंटर दबा सकता है। –

11

आप keyup ईवेंट को रद्द नहीं कर सकते हैं। आप keydown और keypress ईवेंट रद्द कर सकते हैं। प्रलेखन में, ध्यान दें कि के तहत "घटना की जानकारी" "रद्द" "नहीं" keyup के लिए है:

keydown का उपयोग करके आप अब तक रद्द करने के लिए अनुमति देता है keypress से अधिक कुंजी, लेकिन यदि आप कुंजी को उठाए जाने तक रद्द करना नहीं चाहते हैं, तो keypress वह है जो आप चाहते हैं। सौभाग्य से आपके लिए, एंटर कुंजी keypress ईवेंट के लिए रद्द करने योग्य कुंजी में से एक है।

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