2015-05-06 6 views
7

मैं एक पहेली दिखाता हूं कि जब आप तत्व पर ध्यान केंद्रित करते हैं तो क्या होता है, यह इनपुट के 'दिन' भाग पर ध्यान केंद्रित करता है, लेकिन मैं ' डीओएम कैसे प्रस्तुत करता है और तिथि के प्रत्येक भाग को पहचानता है इस पर कोई दस्तावेज नहीं मिलता है।एचटीएमएल 5 इनपुट का फोकस महीना या वर्ष [टाइप = "डेट"]

मैं input[type="date"] तत्व के महीने/वर्ष के हिस्सों को प्रोग्रामेटिक रूप से कैसे केंद्रित कर सकता हूं, और क्या इस प्रकार का तत्व डोम में कैसे प्रदान किया जाता है इस पर कोई दस्तावेज है?

https://jsfiddle.net/uytdhqax/

<input id="dob" type="date" /> 
document.getElementById('dob').focus() 
+0

मुझे लगता है कि यह ब्राउज़र-साइड चीज़ है .. आप 3 इनपुट बना सकते हैं और दिन/महीना/वर्ष टाइप करने के बाद लगातार उन्हें ध्यान केंद्रित कर सकते हैं –

+0

यह एक विकल्प नहीं है। मैं एक यूआई-बूटस्ट्रैप डेटपिकर के साथ AngularJS का उपयोग कर रहा हूँ। मेरा सवाल बहुत प्रत्यक्ष है और मैं किसी भी अन्य समाधान के लिए खुला नहीं हूं: मैं इनपुट [प्रकार = "दिनांक"] तत्व के महीने/वर्ष के हिस्सों को प्रोग्रामेटिक रूप से कैसे केंद्रित कर सकता हूं, और इस प्रकार के तत्व को कैसे प्रदान किया जाता है इस पर कोई दस्तावेज है डोम में? – trickpatty

+1

आप यहां और अधिक पढ़ सकते हैं - यह कंप्यूटर के स्थान पर निर्भर है - http://stackoverflow.com/questions/7372038/is-there-any-way-to-change-input-type-date-format –

उत्तर

4

यह जहाँ तक मुझे पता है हूँ input[type=date] तत्व के किसी भी वर्तमान कार्यान्वयन में संभव नहीं है। इसके अलावा, विभिन्न ब्राउज़र विभिन्न तत्वों में इस तत्व को लागू करते हैं, इसलिए कोई स्टैंडअलोन कार्यान्वयन दस्तावेज नहीं है।

किसी को यह पूछना है कि आप इस व्यवहार का अनुकरण क्यों करना चाहते हैं। साल के मूल्य को बदलने से तत्व को एक मूल्य नहीं मिलेगा जब तक कि दिन और महीना भी सेट नहीं किया जाता है। क्रोम में, कम से कम, यदि आपके पास input[type=date] तत्व है तो आपको प्लेसहोल्डर टेक्स्ट dd/mm/yyyy युक्त तत्व दिखाई देगा। यदि आप मैन्युअल रूप से yyyy भाग का चयन करते हैं और इसे 2015 पर बदलते हैं, उदाहरण के लिए, इनपुट का टेक्स्ट अब dd/mm/2015 पढ़ेगा, लेकिन इसकी value"" (एक खाली स्ट्रिंग) होगी। जब तक आप दिन और महीने के हिस्सों को मैन्युअल रूप से संपादित नहीं कर रहे हैं, तब तक वर्ष पर ध्यान केंद्रित करने से उपयोगकर्ताओं को भ्रम के अलावा कुछ भी हासिल नहीं होगा।

+0

धन्यवाद। मैं ऐसा करने का प्रयास क्यों कर रहा हूं: क्रोम उस तारीख के प्रत्येक अनुभाग पर अपना स्वयं का फ़ोकस लागू करने लगता है जब आप उस पर क्लिक करते हैं। आप वास्तव में क्रोम में वर्ष पर क्लिक कर सकते हैं, और दर्ज की गई तारीख के किसी अन्य हिस्से के बिना केवल वर्ष में प्रवेश कर सकते हैं। मैं सत्यापन के बारे में चिंतित नहीं हूं, मेरे पास यह नियंत्रण में है। कोणीय यूआई-बूटस्ट्रैप डेटपिकर पॉपअप खोलता है, और तारीख इनपुट का ध्यान केंद्रित करता है, मैं date.target का उपयोग करने पर क्लिक किए गए डेटपिकर के हिस्से को फिर से शुरू करने का प्रयास कर रहा था। एक और विकल्प डेटपिकर – trickpatty

+0

@ पैट्रिक लॉवलर हां छोड़ने से फोकस को रोकने और रोकने का होगा, लेकिन यदि आप केवल 'yyyy' भाग को बदलते हैं और' dd' और 'mm' भागों को छोड़ देते हैं, तो वे सक्षम नहीं होंगे पढ़ें कि उपयोगकर्ता ने किस तत्व को तत्व के 'मान' के रूप में दर्ज किया है, तब तक गणना नहीं की जाती है जब तक कि सभी हिस्सों में भरे न हों। –

+0

मुझे लगता है कि यह एक अच्छा बिंदु है। मुझे आश्चर्य है कि एंगुलर के एनजी-मॉडल – trickpatty

2

संक्षिप्त उत्तर: यह समर्थित नहीं है।

आप चयन (फोकस)

var el = document.getElementById('dob'); 
var r = document.createRange(); 
el.setSelectionRange(r); 

का उपयोग कर स्थापित करने के लिए प्रयास करते हैं तो आपको त्रुटि मिल जाएगा:

DOMException: Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('date') does not support selection.

इसके अलावा केवल documentation I found के बारे में तारीख इनपुट प्रकार कहते हैं "समर्थित नहीं है", तो मैं ऐसा लगता है कि ऐसा कोई दस्तावेज नहीं है। अब तक लगता है कि केवल क्रोम इस इनपुट प्रकार को लागू करता है।

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