2011-04-04 8 views
5

मेरे पास थोड़ा असामान्य रूप से संबंधित समस्या है। मेरा वेब ऐप बारकोड रीडर से स्कैनर इनपुट के लिए सुनता है।एक फॉर्म जमा करने की नई लाइन रोकें?

~100.0101~\n 

जहां \n एक नई पंक्ति है: बारकोड रीडर निम्न स्वरूप में कुंजीपटल इनपुट के रूप में प्रस्तुत करता है। मैं एक रेगेक्स के साथ एक वैश्विक जावास्क्रिप्ट श्रोता का उपयोग करता हूं - जब भी श्रोता 'हेर्स' इनपुट रेगेक्स से मेल खाता है, तो मैं अपना barcodeHandler() फ़ंक्शन कॉल करता हूं।

दुर्भाग्यवश, यह फ़ॉर्म के साथ अच्छी तरह से बातचीत नहीं करता है: यदि उपयोगकर्ता स्कैन करते समय फॉर्म इनपुट पर ध्यान केंद्रित करता है, तो फॉर्म सबमिट किया जाता है और श्रोता के आने से पहले पोस्ट करता है, क्योंकि फॉर्म \n 'सबमिट करने के लिए होता है '।

मैं स्कैनर इनपुट नहीं बदल सकता, तो क्या कोई तरीका है कि मैं \n दर्ज होने पर फ़ॉर्म सबमिट करने से रोक सकता हूं?

जाहिर है, मैं अभी भी अपने फॉर्म को एंटर कुंजी के साथ काम करना पसंद करूंगा, और यदि संभव हो तो मैं डिफ़ॉल्ट रूप व्यवहार को बदलना नहीं चाहूंगा!

बहुत धन्यवाद!

+1

आप jQuery का उपयोग करें और कुंजी कार्यों पर एक विशेष समारोह आवंटित और event.preventDefault करना() कर सकते हैं; फ़ॉर्म को सबमिट करने के रूप में संसाधित होने से "एंटर" कुंजी को रोकने के लिए। – ITroubs

+0

धन्यवाद - हालांकि मुझे वास्तव में काम करने के लिए एंटर कुंजी पसंद है - बस बारकोड स्कैनर द्वारा प्रदान की गई \ n' नहीं। क्या दोनों के बीच अंतर करने का कोई तरीका है? – AP257

+0

आह, रेगेक्स का पहला भाग मिलान होने पर मैं ईवेंट श्रोता को लागू कर सकता हूं। यह काम करता है। – AP257

उत्तर

8

आप प्रपत्र नियंत्रण पर कुंजी दबाने पर कब्जा और डिफ़ॉल्ट कार्रवाई preventDefault() या return false का उपयोग कर से बचने के लिए की जरूरत है।

// do this for all <input> <textarea> and <select> elements on the page. 
input.addEventListener("keypress", function(event){ 
    if (event.which == '10' || event.which == '13') { 
     event.preventDefault(); 
    } 
}, false); 

या का उपयोग कर jQuery:

$("input, textarea, select").keypress(function(event){ 
    if (event.which == '10' || event.which == '13') { 
     event.preventDefault(); 
    } 
}); 
+1

एक आकर्षण की तरह काम करता है! मैंने इस तरह इस्तेमाल किया: '$ (": इनपुट ")। कीप्रेस (// कोड) 'क्योंकि मैं इसे सभी इनपुट पर कैप्चर करना चाहता था। धन्यवाद। +1 –

3

फॉर्म के ऑनसबमिट को ओवरराइड करें और सबमिट बटन पर ऑनक्लिक हैंडलर के रूप में अपना स्वयं का विकल्प प्रदान करें।

<form action="submit.php" onsubmit="return false;"> 
    Some input ...<input type="text"/> 
    <input type="button" value="Submit" onclick="parentNode.submit();"> 
</form> 
संबंधित मुद्दे