2009-06-11 7 views
23

मैं एक आईफोन वेब ऐप लिख रहा हूं, और जब पेज लोड होता है, तो मैं कीबोर्ड फ़ील्ड को स्वचालित रूप से टेक्स्ट फ़ील्ड पर ध्यान केंद्रित करना चाहता हूं। सामान्य जावास्क्रिप्ट:मैं एक आईफोन पर एक HTML टेक्स्ट फ़ील्ड कैसे केंद्रित करूं (कीबोर्ड आने के कारण)?

input.focus(); 

काम नहीं कर रहा प्रतीत होता है। कोई विचार?

उत्तर

3

नोट: इस उत्तर पुराना है और वहाँ नए संस्करणों के लिए प्रासंगिक नहीं हो सकता है ...


यह आप पर कोई मदद नहीं, लेकिन पिछले पोस्टर में this धागा लिखा था के रूप में आता है कि वेबकिट की अपनी एक बग इंजन।
मैं नहीं बता सकता है अगर इसकी एक सत्यापित बग या नहीं ...

(काम नहीं करने लगता है मूल रूप में) way back machine से

अंतिम पोस्ट:

मैं शुद्ध XHTML MP में मेरे एप्लिकेशन को विकसित कर रहा हूँ/Ecmascript एमपी/डब्ल्यूसीएसएस। तो देशी प्लेटफार्म ब्राउज़र नियंत्रण एपीआई का उपयोग वास्तव में के लिए एक विकल्प नहीं है। हां आप जिस व्यवहार का उल्लेख करते हैं वह मेरे जैसा ही है। मैंने webkit.org पर बगजिला में अपने विषय की खोज की और पाया कि यह वास्तव में बग की सूचना दी गई है। टेक्स्ट बॉक्स में फोकस() तत्व को हाइलाइट करता है लेकिन उपयोगकर्ता को पाठ दर्ज करना प्रारंभ करने के लिए इसमें एक कैरेट प्रदान नहीं करता है। "[email protected]" द्वारा उल्लिखित टाइमर का उपयोग करने से कोई मदद नहीं मिलती है।

यह व्यवहार प्लेटफॉर्म (एस 60, आईफोन, एंड्रॉइड) में आम है जो वेबकिट इंजन का उपयोग करता है।

तो अब तक मुझे इस समस्या का समाधान नहीं दिख रहा है।

आशा इस

+0

लिंक अब और काम नहीं करता है, साथ ही उत्तर किसी भी उपयोग की जानकारी प्रदान नहीं करता है। – eMarine

18

में मदद करता है अगर आप एक क्लिक करें घटना से फोकस आग यह केवल कुंजीपटल दिखाई देगा, इसलिए एक onclick कि फोकस करता है के साथ पेज पर एक बटन रखने और यह कीबोर्ड दिखाई देगा। प्रमाणीकरण को छोड़कर पूरी तरह बेकार (सबमिट सत्यापन कोड के क्लिक पर अमान्य तत्व पर केंद्रित है)

+0

पुष्टि की। "क्लिक करें" काम करता है। किसी कारण से इशारा घटनाएं काम नहीं करतीं ... – RickDT

+0

आपका क्या मतलब है? इस तरह कोड? 'button.click = function() { बटन.फोकस(); }; document.body.onload = function() { बटन.क्लिक(); }; 'लेकिन यह काम नहीं करता है। – CoderLim

2

मेरे पास एक समान समस्या है, केवल मेरी समस्या यह है कि फोकस 'टचेंड' ईवेंट पर नहीं होगा।

http://jsfiddle.net/milosdakic/FNVm5/

निम्नलिखित कोड क्रोम/सफारी आदि में काम करेंगे, लेकिन मोबाइल सफारी पर असफल हो जायेगी। इसे काम करने का एकमात्र तरीका यह है कि ईवेंट को 'क्लिक' पर बनाना है, लेकिन आईओएस डिवाइस के लिए कोड के रूप में देखते हुए, यह स्पर्श घटनाओं के साथ काम करने के लिए लाभान्वित होगा।

यह वेबकिट इंजन के साथ एक बग प्रतीत होता है।

-4

यह एक workround है:

setTimeout(function(){ 
    input.focus(); 
},500);//milliseconds 
+3

मुझे आईपैड 2.1 पर चलने वाले आईपैड 2 पर काम करने के लिए यह कामकाज नहीं मिला। –

+0

यह ऐप्पल सुरक्षा नीति के संबंध में काम नहीं कर सकता है। –

5

संपादित करें: निम्नलिखित नहीं रह गया है आईओएस पर काम करता है - UIWebView ऑटोफोकस के लिए इस्तेमाल किया ऑटोफोकस और होम स्क्रीन लिंक की अनुमति थी, लेकिन वे विकलांग है कि कई संस्करणों पहले।

autofocus (नीचे देखें) संपत्ति मोबाइल सफारी में एक यूआरएल से काम नहीं करता है, लेकिन काम करता है अगर आप कर रहे हैं:

  1. एक UIWebView
  2. का उपयोग कर एक होम स्क्रीन लिंक
का उपयोग कर

इनपुट के फ़ॉन्ट्स को डबल-टैप पर आईओएस 10 ज़ूम से बचने के लिए काफी बड़ा होना चाहिए (अब वह व्यूपोर्ट हमेशा ज़ूम करने योग्य है) और पेज को आकार देने के लिए डिज़ाइन करने के लिए ताकि यह स्क्रीन फिट हो सके (अन्यथा पेज लोडिंग पर आपको अजीब ज़ूम में समय/दौड़ कीड़े, या स्क्रॉल करें कभी-कभी क्षेत्र में सक्षम स्क्रीन को ठीक से केंद्र में नहीं लगाया जाता है)।

autofocus: ऐसा करने के लिए HTML5 spec autofocus property of the input tag है। लेकिन आईओएस अनदेखा करता है, संभवतः एक क्लीनर यूआई के लिए जो किसी पृष्ठ पर नेविगेट करते समय टच कीबोर्ड पॉप अप नहीं करता है। Here एक ऐसा पृष्ठ है जो ऑटोफोकस संपत्ति का प्रदर्शन करता है। एचटीएमएल 5 से पहले आप window.focus() को window.onload ईवेंट में कॉल करेंगे। हालांकि ऑनक्लिक ईवेंट के हैंडलर के दौरान आईओएस पर फोकस() कॉल समर्थित नहीं हैं।

+1

आपके उत्तर में कुछ कमी है। WkWebView इनपुट फ़ील्ड पर ऑटोफोकस नहीं बनाता है (यह सुरक्षा कारण से जुड़ा हुआ है)। –

0

शायद थोड़ा देर हो सकता है लेकिन भविष्य के व्यक्ति के लिए शायद। आईओएस आईपैड (6 और नवीनतम) पर हमारे webapp चल में, हम एक सेट अंतराल के साथ यह कार्य करें:

startFocusOnTextField: function() { 
     this.intervalIDForTextFieldFocus = window.setInterval(function() { 
      document.getElementById(page.textInputFieldObj.id).focus(); 
     }, 150); 
    }, 

कौन सा पृष्ठ लोड (jQuery मोबाइल वातावरण)

+1

फॉर्म इनपुट फोकस प्राप्त करता है (सीएसएस शैलियों को लागू किया जाता है), लेकिन कीबोर्ड नहीं खुलता है। – guiniveretoo

0

पर कहा जाता है आप के साथ ध्यान केंद्रित कर रहे हैं तो एक क्लिक ईवेंट से, आपको डिफॉल्ट को रोकने की आवश्यकता है अन्यथा क्लिक इवेंट डिफ़ॉल्ट कार्रवाई क्लिक किए गए आइटम पर फ़ोकस सेट करेगी।

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