2010-05-08 9 views
67

पर एंटर कुंजी के माध्यम से फॉर्म सबमिशन को अक्षम करें, जब मैं एंटर दबाता हूं तो परंपरागत 'फ़ॉर्म सबमिट करता हूं' क्योंकि उपयोगकर्ता परिचित हैं। लेकिन रिफ्लेक्स द्वारा, जब वे टेक्स्ट इनपुट बॉक्स के साथ समाप्त होते हैं तो वे अक्सर एंटर दबाते हैं - लेकिन इससे पहले कि वे वास्तव में पूर्ण रूप से किए जाते हैं।केवल _some फ़ील्ड

मैं केवल एंटर कुंजी को हाइजैक करना चाहता हूं, फिर इनपुट के एक निश्चित वर्ग पर ध्यान केंद्रित करें।

खोज रहे हैं Related Questions इस के लिए मैं क्या देख रहा हूँ की तरह लग रहा:

if (document.addEventListener) { 
    document.getElementById('strip').addEventListener('keypress',HandleKeyPress,false); 
} else { 
    document.getElementById('strip').onkeypress = HandleKeyPress; 
} 

लेकिन if (document.addEventListener) { हिस्सा मेरे लिए अपरिचित है।

+2

पर सभी फ़ील्ड के लिए एंटर कुंजी पर सबमिशन फॉर्म करेगा। इसे फीचर डिटेक्शन कहा जाता है। यदि ब्राउज़र ईवेंट श्रोताओं को जोड़ने के लिए 'addEventListener()' वाक्यविन्यास का उपयोग करता है, तो प्रत्येक DOM नोड ऑब्जेक्ट (और विशेष रूप से, दस्तावेज़ ऑब्जेक्ट में) में 'addEventListener' नामक एक फ़ंक्शन ऑब्जेक्ट होगा)। एक बूलियन में परिवर्तित होने पर एक फ़ंक्शन ऑब्जेक्ट सत्य हो जाता है, इसलिए पहली शाखा चलती है। यदि ब्राउज़र addEventListener वाक्यविन्यास को समझ में नहीं आता है, तो 'document.addEventListener' को अपरिभाषित किया जाएगा (जो झूठ में परिवर्तित हो जाता है) और दूसरी शाखा में फ़ॉलबैक कोड निष्पादित हो जाता है। – Tgr

+0

व्याख्यात्मक की बहुत सराहना करते हैं। धन्यवाद! – justSteve

उत्तर

127

आप को पकड़ने और रद्द इस तरह उन क्षेत्रों पर keypress दर्ज कर सकते हैं:

$('.noEnterSubmit').keypress(function(e){ 
    if (e.which == 13) return false; 
    //or... 
    if (e.which == 13) e.preventDefault(); 
}); 
फिर अपने इनपुट पर

सिर्फ उन्हें एक class="noEnterSubmit" :)

दे मामले दूसरों में आगे देखते हुए पाते हैं इस पर बाद में, में jQuery 1.4.3 (अभी तक बाहर नहीं) आप इस के लिए इसे छोटा कर सकते हैं:

$('.noEnterSubmit').bind('keypress', false); 
+46

आपको यह भी ध्यान में रखना होगा कि 'बाइंड (' कीप्रेस ', झूठी); 'सभी डेटा एंट्री_ को रोक देगा। तो यदि आप इसे पाठ इनपुट तत्वों पर लागू करना चाहते हैं, तो पहले समाधान – hohner

+4

का उपयोग करें यदि आप गतिशील फ़ील्ड का उपयोग कर रहे हैं तो आपको इसे '$ (' body ') में बदलना चाहिए। (' Keypress ',' .noEnterSubmit ', फ़ंक्शन () {...}); ' – seangates

+3

कक्षा का उपयोग करना अर्थपूर्ण नियंत्रण के लिए उपयुक्त नहीं है। इसके लिए डेटा-नोसबमिट या समान HTML 5 डेटा विशेषता का बेहतर उपयोग करें। $ ('[डेटा-नोसबमिट]') तब चयनकर्ता है। –

1

अनुमति देने के लिए केवल एक विशिष्ट वर्ग (इस उदाहरण, 'enterSubmit' में) पर दर्ज करें:

jQuery(document).ready(function(){ 
    jQuery('input').keypress(function(event){ 
     var enterOkClass = jQuery(this).attr('class'); 
     if (event.which == 13 && enterOkClass != 'enterSubmit') { 
      event.preventDefault(); 
      return false; 
     } 
    }); 
}); 
3

बस अपने एचटीएमएल कोड में <Head> टैग में निम्न कोड जोड़ें। यह फॉर्म

<script type="text/javascript"> 
    function stopEnterKey(evt) { 
     var evt = (evt) ? evt : ((event) ? event : null); 
     var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
     if ((evt.keyCode == 13) && (node.type == "text")) { return false; } 
    } 
    document.onkeypress = stopEnterKey; 
</script> 
संबंधित मुद्दे