2017-01-17 9 views
9

मेरे पास एक रेल ऐप है जिसमें बंद बैक-एंड है। कुछ पृष्ठों पर, मैं एक टेक्स्ट इनपुट स्वतः से चुनना चाहता हूं ताकि मैं हर बार माउस/टचस्क्रीन के साथ इसे चुने बिना बारकोड स्कैन करने के लिए बाहरी ब्लूटूथ स्कैनर का उपयोग कर सकूं। यह गैर-मोबाइल उपकरणों पर पूरी तरह से काम करता है। हालांकि, मोबाइल उपकरणों (ज्यादातर टैबलेट) पर, मैं कीबोर्ड को पॉपअप करना चाहता हूं (क्योंकि स्कैनर को सिस्टम द्वारा "कीबोर्ड" के रूप में देखा जाता है)। मुझे पता है कि यह आईओएस द्वारा रोका गया है, क्योंकि यह परेशान हो सकता है। हालांकि, मैं जानना चाहता हूं:jQuery - मोबाइल पर ऑटोशो कीबोर्ड को अनुमति दें

  1. क्या मेरे पास एंड्रॉइड और/या विंडोज टैबलेट पर कीबोर्ड ऑटो-दिखाई दे सकता है?

  2. आईओएस पर, क्या मैं इस डिफ़ॉल्ट व्यवहार को बदल सकता हूं ताकि कीबोर्ड स्वतः दिखाई दे? मेरे पास इस डिवाइस की सभी डिवाइसों तक पहुंच है।

संपादित करें: मुझे पता है कि मैं कुंजीपटल प्रदर्शित करने के लिए एक click घटना का उपयोग कर सकते (है कि कैसे यह अब दिखाई देता है)। हालांकि, जब भी मैं स्कैन करना चाहता हूं, मैं टैबलेट को छूना नहीं चाहता हूं।

+0

क्या यह एक वेब अनुप्रयोग है? आपको पेज लोड पर स्वतः दिखने की ज़रूरत है, है ना? –

+0

@ shukshin.ivan यह रेल का उपयोग कर एक वेब अनुप्रयोग है। जबकि मुझे पृष्ठ लोड के लिए इसकी आवश्यकता है, मुझे इसे सामान्य रूप से चाहिए। मेरे पास कुछ जावास्क्रिप्ट है जो प्रत्येक सेकेंड में इनपुट फ़ील्ड को ऑटो-सिलेक्ट करता है यदि यह पहले से नहीं चुना गया है। कीबोर्ड को स्वत: प्रकट करने के लिए अब मुझे वही जावास्क्रिप्ट चाहिए। –

+0

मुझे लगता है कि यह हर ओएस पर संभव नहीं है। कुंजीपटल दिखाना उपयोगकर्ता की कार्रवाई से जुड़ा हुआ है - http://jsfiddle.net/Twisty/knoohfwt/2/ –

उत्तर

4

महान prompt() उपयोग को छोड़ कर कुछ समाधान कर रहे हैं।

  1. फोनगैप में वेब एप्लिकेशन लपेटें और the following way करें।
  2. ध्यान में रखते हुए कि ब्लूटूथ स्कैनर को keyboard ईवेंट सुनने में सक्षम करने के लिए पहले क्लिक की आवश्यकता है, आप मैन्युअल रूप से पहले क्लिक करने के लिए जेएस-कोड बदल सकते हैं (कहें, पूर्णस्क्रीन textarea) और फिर स्कैनर से निपटें। यह textarea हो सकता है जो पहले क्लिक के बाद सही छुपाता है और पाठ के बिना javascript के साथ सब कुछ किया जाता है।
  3. ऐसा लगता है कि विंडोज स्मार्टफोन आपकी मदद कर सकते हैं, किसी समस्या से संबंधित कोई समस्या नहीं मिल सकती है।

मैंने नोकिया लुमिया में विंडोज 8.1, विंडोज 10 और पुराने विंडोज मोबाइल 8.1 के साथ क्रोम 56 में autofocus fiddle का परीक्षण किया है। पहले दो मामलों में यह ध्यान केंद्रित करने के बाद कीबोर्ड सुनता है। उत्तरार्द्ध नहीं करता है।

बोनस। एंड्रॉइड 4 के साथ एचटीसी वन एम 8 एमुलेटर।4 क्लिक के बिना कीबोर्ड को सुनता है। ब्राउज़रस्टैक सेवा के साथ परीक्षण किया गया। क्या होगा अगर कुछ एंड्रॉइड उदाहरणों को क्लिक करने की ज़रूरत है?

बोनस 2 - autodetect scanner library

+0

यह काम करेगा, लेकिन मेरे पास दो स्कैन क्षेत्र हैं जो मैं आगे और आगे जाता हूं। प्रत्येक बार जब मैं कुछ स्कैन करता हूं तो एक क्लिक इवेंट की आवश्यकता होती है, जो मूल रूप से मेरी समस्या है। –

+0

यदि आपके पास दो स्कैन क्षेत्र हैं और उन्हें विशिष्ट क्रम (ए-बी-ए-बी-ए-बी ...) द्वारा स्कैन करने की आवश्यकता है, तो आप कोड को एक 'textarea' पर स्कैन कर सकते हैं और हैंडलरों को जावास्क्रिप्ट के माध्यम से मान पास कर सकते हैं। आप स्क्रीन पर ऑर्डर प्रदर्शित कर सकते हैं। बिग ए - स्कैन ए, बड़ा बी स्कैन बी और इसी तरह। –

+0

बोनस 2 लिंक वास्तव में अच्छा था। मैंने ऐसा कुछ कामकाज के रूप में किया (मूल रूप से कच्चे इनपुट का पता लगाने और इसे स्वयं दर्ज करना)। आप भी अकेले थे जिन्होंने वास्तव में मुझे विंडोज/एंड्रॉइड पर एक जवाब दिया था। –

3

पर thoses answers आधार पर आप कम से कम iOS (iPhone) में नहीं, कुछ समाधान

आप नहीं कर सकते हैं की कोशिश करने के लिए है, और मैं एंड्रॉयड मानना ​​है कि रूप में अच्छी तरह। यह उपयोगिता मुद्दा है कि उपयोगकर्ता इनपुट को छोड़कर कीबोर्ड को ट्रिगर करने की अनुमति नहीं दी जानी चाहिए (यह स्वचालित होने पर यह केवल परेशान है)।

  • prompt() कुंजीपटल
  • खोलता है आप एक .click() घटना के भीतर से .focus() ट्रिगर करते हैं (उदाहरण के लिए> से अपने संवाद खोलने में),:

    तरीके के एक जोड़े मैं के बारे में पता इस से बचने के लिए कर रहे हैं कीबोर्ड

आपके पृष्ठ की शुरुआत में आपके मामले में?

कम से कम हो सकता है इस JS fiddle आप मदद कर सकते हैं या this one

+0

मैं स्क्रीन पहलू को छूने की कोशिश कर रहा हूं, क्योंकि यह हर बार जब मैं स्कैन करना चाहता हूं, तो इसे करने के लिए मजबूर करता हूं, नहीं बस पेज लोड पर। क्या आप विंडोज के बारे में जानते हैं? –

3

आप बार कोड स्कैनिंग फ़ंक्शन शुरू करने के लिए फ़ोकस(), प्रॉम्प्ट() जैसे ईवेंट हैंडलिंग के लिए निर्मित फ़ंक्शंस में जावास्क्रिप्ट का उपयोग कर सकते हैं। इस मामले में कुछ उपयोगिता भी बदलना सहायक होगा। हाइब्रिड ऐप्स बनाने के लिए https://github.com/cjpearson/cordova-plugin-keyboard

हैप्पी कोडिंग पर कॉर्डोवा कीबोर्ड प्लगइन पर कुछ पढ़ने का प्रयास करें।

-1

मेरी सर्वश्रेष्ठ शर्त offsite input का उपयोग कर रही है और वहां पर ध्यान केंद्रित कर रही है। इससे आप यह नियंत्रित करने में मदद मिलेगी -

  1. कुंजीपटल उपस्थिति के समय (setTimeOut)
  2. चेक और कीबोर्ड

फिर से खोलना आप इस-

<input type="text" style="visibility: hidden; position: fixed; left: -200px" > 
की तरह कुछ करने की आवश्यकता होगी

jQuery-

$("#theOffViewBox").focus(); 
के साथ

यह मूल जावास्क्रिप्ट जुगाड के रूप में आईओएस/एंड्रॉइड/विंडोज/लिनक्स पर समान रूप से काम करेगा।

+0

कीबोर्ड दिखाई देने के बिना इनपुट नहीं बदलेगा। यह सिर्फ कीबोर्ड घटनाओं को नहीं सुनता है। यहां तक ​​कि यह केंद्रित है। –

+0

'मुझे पता है कि कीबोर्ड को प्रदर्शित करने के लिए मैं एक क्लिक ईवेंट का उपयोग कर सकता हूं (इस तरह यह अब दिखाई देता है)' ... इसका मतलब है '। फोकस()' काम करना चाहिए ... –

+0

आप बार-बार ध्यान केंद्रित कर सकते हैं उपयोगकर्ता डिवाइस के साथ इंटरैक्ट करता है। –

1

कोड के नीचे प्रयास करें। यह

// div is some selected element 
      var f = function(event) { 
       $timeout(function() { // angular way, setTimeout is OK 
        input[0].focus(); 
        event.preventDefault(); 
       }) 
      }; 
      var mobile = false; 
      div.on('click', function(event) { 
       if(mobile) return; 
       f(event); 
      }); 

      div.on('touchstart', function(event) { 
       mobile = true; 
       f(event); 
      }); 

      div.on('touchend', function(event) { 
       event.preventDefault(); 
       event.stopPropagation(); 
      }); 
संबंधित मुद्दे