2010-12-03 12 views
7

मुझे आश्चर्य है कि कोई प्लगइन या समाधान सुझा सकता है जो मुझे एक ही समय में एकाधिक इनपुट दिनांक प्रारूपों के साथ jQuery डेटपिकर प्लगइन का उपयोग करने की अनुमति देगा। यह उपयोगकर्ता को किसी निर्दिष्ट प्रारूप में दिनांक दर्ज करने की अनुमति देगा। यानी .:jQuery डेटपिकर जो कई प्रारूपों का समर्थन करता है

3 31 10 
3/31/2010 
3-31-10 

मैं वास्तव में परवाह नहीं करता है, तो मूल्य उपयोगकर्ता टैब पर नज़र के बाद विशिष्ट स्वरूपों में से एक को घायल हो जाता है है। एक अच्छा इनपुट मास्किंग प्लगइन भी मेरे उद्देश्य के लिए काम कर सकता है, हालांकि, this popular one प्रत्येक फ़ील्ड के लिए एक निश्चित कार्डिनालिटी की अपेक्षा करता है, जो काम नहीं करेगा क्योंकि मैं चाहता हूं कि उपयोगकर्ता मार्च के महीने के लिए 3 या 03 दर्ज कर सके , उदाहरण के लिए।

+1

jQueryUI Datepicker dateFormat आपके लिए क्यों काम नहीं करेगा? http://jqueryui.com/demos/datepicker/#date-formats –

+0

मैं चाहता हूं कि उपयोगकर्ता विभिन्न प्रारूपों में तारीख दर्ज कर सके, मुझे वास्तव में परवाह नहीं है कि मैं कौन हूं और मैं उन्हें नहीं चाहता अग्रिम में निर्दिष्ट करना है। डेटफॉर्मेट केवल एक प्रारूप स्वीकार करता है। –

उत्तर

0

यह 'Unobtrusive Date-Picker Widget V 5' कई प्रारूपों को स्वीकार करता है। मैंने आपके द्वारा प्रदान किए गए सभी तीन प्रारूपों का त्वरित परीक्षण किया, और सभी को स्वीकार किया जाना प्रतीत होता था।

डेमो: http://www.frequency-decoder.com/demo/date-picker-v5/

1

आप एक से अधिक इनपुट स्वरूपों की व्याख्या और blur घटना पर पात्रों को बदलने के लिए प्रयास कर सकते हैं:

$("#datepicker").datepicker({ 
    constrainInput: false 
}).blur(function() { 
    var txt = $(this).val(); 
    $(this).val(txt.replace(/-| /g, '/')); 
}); 

दुर्भाग्य से, अगर मैं एक ही है, तो दर्ज करने के लिए एक रास्ता नहीं मिल रहा है कुंजी दबाया जाता है।

17

थोड़ा समय के बाद से इस सवाल का सक्रिय था हो गया है, लेकिन अगर किसी को भी सरल jQueryUI datepicker का उपयोग कर समस्या को हल करने में रुचि रखता है, वह अपने parseDate विधि अदल-बदल करके पूरा किया जा सकता:

$.datepicker.inputFormats = ["dd-mm-yy", "dd/mm/yy", "dd mm yy"];//list formats to be accepted here 

$.datepicker.originalParseDate = $.datepicker.parseDate; 

$.datepicker.parseDate = function (format, value, settings) { 
    var date; 

    function testParse(format, value, settings) { 
     if (! date) { 
      try { 
       date = $.datepicker.originalParseDate(format, value, settings); 
      } catch (Error) { 
      } 
     } 
    } 

    testParse(format, value, settings); 
    for(var n = 0, stop = $.datepicker.inputFormats ? $.datepicker.inputFormats.length : 0; n < stop; n++){ 
     testParse($.datepicker.inputFormats[n], value, settings); 
    }; 
    return date; 
}; 
+0

क्या लाइन 'testParse (प्रारूप, मान, सेटिंग्स) है; इसका मतलब है कि मूल दिनांकफॉर्मेट पहले और फिर' इनपुटफॉर्मैट्स 'का परीक्षण किया जाता है? यदि हां, तो 'इनपुटफॉर्मैट्स' को 'अतिरिक्तफॉर्मैट' कहा जाना चाहिए? – mnsc

+0

आपने अभी अपना दिन बनाया है! धन्यवाद! – Nicknameless

+0

क्या आप भी उपयोग जोड़ सकते हैं। और क्या मुझे अपना कोड jquery UI फ़ाइल के अंदर जोड़ना चाहिए और इसे संशोधित करना चाहिए? धन्यवाद – Alex

0

केज सांप ने उत्तर दिया कि आप एकाधिक प्रारूपों का समर्थन करने के लिए jquery datepicker फ़ंक्शन parseDate को ओवरराइड कर सकते हैं। (मैं प्रतिष्ठा के कारण टिप्पणी नहीं कर सकता, लेकिन इस जानकारी को ध्यान में रखते हुए)

मैंने पाया कि आपको प्रारूप दिनांक और _possibleChars फ़ंक्शंस को ओवरराइड करने की आवश्यकता है यदि आप डेटपिकर के भीतर प्रारूप चर सेट कर रहे हैं प्रारूपों। डेटपिकर एक सूची (मेरे मामले JSON में) की अपेक्षा नहीं करता है और आपको इसके आसपास काम करना होगा।

यह भी मान लें कि यदि आप इन दोनों को ओवरराइड नहीं करते हैं, तो वे अपेक्षा के अनुसार व्यवहार नहीं करेंगे। जैसे आप अपने कस्टम प्रारूप सूची में मौजूद वर्ण टाइप नहीं कर पाएंगे (डेटपिकर में संग्रहीत पहले प्रारूप को छोड़कर)।

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