2012-04-17 12 views
63

संभव डुप्लिकेट का समर्थन करता है, तो कर सकते हैं:
HTML5 Type Detection and Plugin Initializationमैं कैसे बता एक ब्राउज़र <input type = 'तारीख'>

<input type=date> 

एक साथ एक इनपुट बनाना चाहिए (वैकल्पिक) उपयोगकर्ता-एजेंट ने डेटपिकर प्रदान किया है, लेकिन यह अभी तक व्यापक रूप से समर्थित नहीं है, इसलिए हम एक jQuery UI Datepicker का उपयोग कर रहे हैं। हम ब्राउजर को अपने डेटपिकर का उपयोग करने की अनुमति कैसे दे सकते हैं और केवल ब्राउज़र यूआई पर वापस आ सकते हैं यदि ब्राउज़र में ऐसी कोई चीज़ नहीं है?

वर्तमान में मुझे लगता है कि केवल ओपेरा का डेटपिकर में बनाया गया है, लेकिन ओपेरा के लिए एक परीक्षण स्पष्ट रूप से खराब होगा। क्या इस सुविधा का पता लगाया जा सकता है (यदि यह पोर्टेबल तरीके से हो सकता है)?

धन्यवाद

+0

दिनांक समर्थन का पता लगाना इस तथ्य से जटिल है कि विभिन्न ब्राउज़र विभिन्न स्तरों पर समर्थन का समर्थन करते हैं। कुछ अच्छे कैलेंडर डेट-पिकर की पेशकश करते हैं। अन्य सिर्फ यह सत्यापित करते हैं कि यह एक तारीख की तरह दिखता है। – rjmunro

+1

बिल्कुल सवाल मैंने क्यों पूछा। मैं जानना चाहता था कि ब्राउजर के पास डेटपिकर है, भले ही यह डेट इनपुट को समझने का दावा न करे। यह AFAICT एक डुप्लिकेट नहीं है, और नीचे दिए गए उत्तर मदद नहीं करते हैं। मुझे अद्यतन करने या चुनाव करने के लिए कभी भी गोल नहीं मिला। मैं बस '<इनपुट वर्ग = डेटपिकर> 'के साथ गया और हमेशा jquery ui डेटपिकर (पुराना शैली वाला तरीका) का उपयोग करता हूं। – DaedalusFall

+1

डेस्कटॉप ब्राउज़र पर यह ध्यान दिया जाना चाहिए कि दिनांक इनपुट UI अक्सर वांछित होने के लिए कुछ छोड़ देता है। भले ही वे इसका समर्थन करते हैं, आप इसका उपयोग नहीं करना चाहेंगे। यह समस्या मोबाइल ब्राउज़र को प्रभावित नहीं करती है। –

उत्तर

101

विधि bellow जांच करता है कि कुछ इनपुट प्रकार ब्राउज़रों के सबसे द्वारा समर्थित है:

function checkInput(type) { 
    var input = document.createElement("input"); 
    input.setAttribute("type", type); 
    return input.type == type; 
} 

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

function checkDateInput() { 
    var input = document.createElement('input'); 
    input.setAttribute('type','date'); 

    var notADateValue = 'not-a-date'; 
    input.setAttribute('value', notADateValue); 

    return (input.value !== notADateValue); 
} 
+8

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

+30

के लिए समर्थन नहीं है टाइप प्रकार विशेषता के लिए पूछना सभी एंड्रॉइड स्टॉक ब्राउज़र में काम नहीं करता है। वे दिखाते हैं कि वे इनपुट टाइप = दिनांक का समर्थन करते हैं, लेकिन वे डेट इनपुट के लिए यूआई नहीं देते हैं। यह सुविधा का पता लगाने मेरे लिए काम किया: function() { वर एल = document.createElement ('इनपुट'), notADateValue = 'नहीं-एक की तारीख'; el.setAttribute ('type', 'date'); el.setAttribute ('value', notadateValue); वापसी! (El.value === notadateValue); } चाल एक अवैध मूल्य को किसी दिनांक फ़ील्ड में सेट करना है। यदि ब्राउज़र इस इनपुट को स्वच्छ करता है, तो यह डेटपिकर भी प्रदान कर सकता है। – simonox

+0

@ सिमोनॉक्स: एक बहुत अच्छा समाधान। उस –

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