2012-07-19 17 views
6

डालने के दौरान डायनामिक स्मार्ट डेट मास्क क्या जावास्क्रिप्ट या jQuery में एक महत्वपूर्ण इनपुट और एक कॉपी और पेस्ट बॉक्स में पेस्ट करने के लिए दिनांक टाइप करते समय गतिशील रूप से पता लगाने और बदलने का कोई तरीका है?दिनांक

मैं एक कार्यात्मक टेक्स्ट बॉक्स बनाने की कोशिश कर रहा हूं जिसमें एक महीने के रूप में दो अंक हैं।

के बाद से महीने हो सकता है से 1 एक नंबर - 12 मैं पहले अंक को लागू करने का 1 या 0.

चाल है कि मैं फिर भी ऐसा करने के लिए कोशिश कर रहा हूँ है जब पाठ बॉक्स पहले होना चाहते हैं लाभ फोकस और एक उपयोगकर्ता टाइप करने की मांग कर रहा है, यदि वह संख्या 2 - 9 है, तो मैं शून्य को पहले स्थान को स्वचालित रूप से भरना चाहता हूं और फिर 9 दूसरे स्थान पर।

इससे पहले कि मैं कुछ भी इस तिथि इनपुट तो कैसा लगेगा टाइप करें:

__/__/_____ 

अगर मैं टाइप एक "1"

1_/__/_____ 

अगर मैं टाइप "2" मिलना चाहिए

02/__/_____ 

यदि मैं टाइप करता हूं तो "22"

02/2_/_____ 

अगर मैं टाइप "77"

07/07/_____ 

मैं बहुत कोड के साथ एक जवाब या एक उपकरण पहले से ही एक पिछले पोस्ट करने के लिए इस या एक लिंक है कि के लिए एक लिंक के लिए दिलचस्पी होगी मिलना चाहिए?

आखिरकार मैं इसे एक मुखौटा में रखना चाहता हूं, इसलिए 7/7/2011 या 7/7/11 या 07/07/2011 हमेशा 07/07/2011 तक भर जाएगा। अंतिम अंतिम संस्करण में मैं साल को डिफ़ॉल्ट रूप से चालू करने की कोशिश कर रहा हूं लेकिन प्रत्येक 10 वर्ष ++ में गिरावट आई है।

+2

एक अंतिम उपयोगकर्ता परिप्रेक्ष्य से, मुझे इन प्रकार की चीजें * बेहद * प्रभावशाली परेशानियां मिलती हैं। यह निश्चित रूप से मेरी राय है। मैं इन्हें करने का सबसे अच्छा तरीका सलाह के लिए उपयोगकर्ता अनुभव स्टैक एक्सचेंज की जांच करूंगा। उनके पास पहले से ही एक पूर्ण समाधान हो सकता है। –

उत्तर

2

उपयोगकर्ता के टाइपिंग के बजाए टेक्स्टबॉक्स के धुंध पर श्रोता को क्यों संलग्न न करें।

यदि आप "1" टाइप कर रहे थे, तो उपयोगकर्ता अनुभव के बारे में सोचें, और अचानक, इनपुट ने जो कुछ भी कर रहे थे, उसमें शून्य को जोड़ना या निकालना शुरू कर दिया था, जबकि आप इसे कर रहे थे?

var dayInput = document.getElementById("day-input"); 
// usually, I'd just use event-listeners, but feel free to refactor 
dayInput.onblur = handleDayOrMonth; 

function handleDayOrMonth() { 
    var el = (this === window) ? event.srcElement : this, 
     number_string = el.value; 

    // checking that it's an actual number 
    if (!isNaN(parseInt(number_string)) { 
     if (number_string.length === 1) { el.value = "0" + number_string; } 
    } 
} 

वर्ष को संभालना वही होगा, सिवाय इसके कि आप जो भी हो, उसे शुरू करने के लिए "20" जोड़ देंगे।

इसे jQuery करने के लिए स्वतंत्र महसूस करें।

+0

यदि इनपुट मास्क किया गया है तो उपयोगकर्ताओं का अनुभव प्रभावित नहीं होना चाहिए। RetroCoder

+1

हां। आदर्श अनुभव, यदि आप उस परेशानी पर जा रहे हैं, तो उपयोगकर्ता को उनके मूल्यों को किसी भी तरह से इनपुट करने दें, और उसके बाद फॉर्म के पोस्ट के लिए अपने अपेक्षित परिणाम में इसे सर्वर पर वापस प्रारूपित करें। और केवल उन प्रारूपों को वास्तव में समन्वयित करना चाहिए यदि: ए) आप छुपा सत्यापन नहीं कर रहे हैं या बी) यह अनुभव का एक वैध हिस्सा है (जैसे घड़ी या टाइमर पर पैडिंग 0)। – Norguard

+0

मुझे यह विचार पसंद है। मैंने एक विस्तारित दृश्य पॉप आउट किया है जैसे "ज़ूम आउट" जैसा कि दिखाता है कि वे एक ही समय में टाइप कर रहे हैं कि यह दिखाता है कि यह ऑटो जादुई रूप से ज़ूम आउट आउट में इसे कैसे स्वरूपित करता है। – RetroCoder

2

मुझे विश्वास है कि कार्यक्षमता है कि आप चाहते हैं jQuery Masked Input plugin

डेमो द्वारा प्रदान की जाती है: http://jsfiddle.net/SO_AMK/SEXAj/

कृपया ध्यान दें कि यह भी केवल न्यूमेरिक वर्णों की अनुमति देता है।

+0

मैं पहले से ही इस जावास्क्रिप्ट का उपयोग कर रहा हूं और यदि आप बक्षीस के विवरण को फिर से पढ़ते हैं तो आवश्यकताओं को स्पष्ट होना चाहिए। – RetroCoder

+0

मैं कीडाउन घटना पर बाध्य करने में सक्षम था। Jsfiddle के लिए धन्यवाद। मैं आपको 50 अंक दे रहा हूं। – RetroCoder

+0

धन्यवाद। क्षमा करें मैंने पहले जवाब नहीं दिया था, लेकिन मेरे पास कोई बेहतर समाधान नहीं था इसलिए कुछ भी कहने में कोई बात नहीं थी :) –