2010-11-02 16 views
26

मेरे पास एक लॉगिन टेम्पलेट वाला मोबाइल टेम्पलेट है जो AJAX/url हैश आधारित ब्राउज़िंग है। यदि किसी आईफोन पर उपयोगकर्ता आईफोन कीबोर्ड पर "जाओ" बटन पर क्लिक करता है तो AJAX प्रमाणीकृत/उन्हें लॉग इन करता है और फिर अगले पृष्ठ को दूसरे div के अंदर लोड करता है और वर्तमान लॉगिन फॉर्म div को छुपाता है।जावास्क्रिप्ट - एक टेक्स्टबॉक्स को फोकस करें

समस्या यह है कि, एक आईफोन पर कीबोर्ड अभी भी पॉप अप हो गया है। क्या जावास्क्रिप्ट के माध्यम से टेक्स्टबॉक्स तत्व को फोकस करने के लिए वैसे भी है?

+0

http://web-design.blogs.webucator.com/files/2010/08/onFocusTShirt.gif :-) –

उत्तर

48

blur() विधि का उपयोग करें या किसी अन्य तत्व पर फ़ोकस सेट करने का प्रयास करें।

+0

क्या कोई अन्य तरीका नहीं है? मैं एक div पर ध्यान केंद्रित करने की स्थापना की कोशिश की है और कहा कि काम नहीं किया – Joe

+1

अच्छी तरह से नहीं है 'कलंक()' विधि – Xint0

+0

कि एक आकर्षण काम किया! धन्यवाद! – Joe

3

आप विशिष्ट तत्व है कि आप धुंधला करना चाहते करने के लिए आसान पहुँच नहीं है, तो उसके लिए थोड़ा hacky जिस तरह से आप लागू कर सकते हैं कार्यक्षमता "सभी को धुंधला है।"

document.getElementById("blur-hack").focus(); 

ध्यान दें कि इनलाइन एचटीएमएल स्टाइल के लिए, हम ऐसा नहीं कर सकते:

<input id="blur-hack" type="text" style="position: absolute; opacity: 0;"> 

फिर इस वर्तमान में ध्यान केंद्रित कुछ भी unfocus होगा JS:

बस अपने पृष्ठ पर कहीं निम्न HTML जोड़ने display: none या अन्यथा आप इस पर ध्यान केंद्रित नहीं कर सकते हैं। position और opacity पर्याप्त रूप से प्रवाह से तत्व निकाल देंगे - आप भी मार्जिन इस्तेमाल कर सकते हैं जिस तरह से बंद पेज यह भगाओ, आदि

+2

या तुम सिर्फ 'height' 0 – Bill

12

यह मैं क्या इस्तेमाल किया जब .blur() मेरे दोस्त होने के लिए नहीं करना चाहता था है

function blurAll(){ 
var tmp = document.createElement("input"); 
document.body.appendChild(tmp); 
tmp.focus(); 
document.body.removeChild(tmp); 
} 
+2

यह अद्भुत है करने के लिए सेट कर सकते हैं, और मैं के लिए क्या देख रहा था। मुझे यह जवाब पसंद है क्योंकि यह स्वयं निहित है और यह बिल्कुल एक ही चीज करता है, और कोई अव्यवस्था नहीं छोड़ता है। – thomasfuchs

0

इस पुस्तक को बनाए रखेंगे, और नहीं एक तत्व के किसी भी फ़्लैश कारण

resetFocus() { 
    let scrollTop = document.body.scrollTop; 
    let body = document.body; 

    let tmp = document.createElement('input'); 
    tmp.style.opacity = 0; 
    body.appendChild(tmp); 
    tmp.focus(); 
    body.removeChild(tmp); 
    body.scrollTop = scrollTop; 
} 

@ skygoo के समाधान के आधार पर

0

@shygoo से समाधान पर बिल्डिंग - यह टाइपस्क्रिप्ट में अच्छी तरह से अनुवाद करता है!

export function unfocus(): any { 
    const tmp: HTMLInputElement => document.createElement('input'); 
    document.body.appendChild(tmp); 
    tmp.focus(); 
    document.body.removeChild(tmp); 
} 

कुछ नोट ...

  1. यह प्रकार any की है ताकि यह AngularJS के $timeout सेवा के साथ संगत है, भले ही यह वास्तव में कुछ भी देता है कभी नहीं। के बाद से यह कभी नहीं समारोह कॉल के जीवनकाल के दौरान बदलता है
  2. tmp स्थिर है।
संबंधित मुद्दे