2010-09-16 22 views
5

पर एक कुंजी प्रेस से संबंधित एक साफ HTML तरीका है, मैं उस एप्लिकेशन पर काम कर रहा हूं जिसमें मैं त्वरित डेटा प्रविष्टि के लिए अनुमति देना चाहता हूं। तो मैं int महीने मूल्य (यानी 7 = जुलाई) द्वारा चयनित दिनांक फ़ील्ड बनाना चाहता हूं। मुझे लगता है कि मेरे पास केवल 2 विकल्प हैं।क्या ड्रॉपडाउन आइटम

  1. प्रारंभ में लगा महीना करने के लिए संख्या (1 - जनवरी, 2 - फ़रवरी, ... आदि), लेकिन यह बदसूरत
  2. उपयोग जे एस या jQuery कुंजी दबाव रोकना और उपयुक्त माह चयन करने के लिए साध्य (है , लेकिन गंदा)

वहाँ एक ड्रॉप डाउन के लिए एक छिपा locater करने के लिए एक तरीका है?

- स्पष्टता के लिए संपादित करें -

मैं एक कैलेंडर पिकर (जो मेरे पास है) वे टाइप कर सकते हैं का उपयोग कर इनपुट करने के लिए उपयोगकर्ताओं को और अधिक आसानी से कुंजीपटल के माध्यम से तारीख की अनुमति देने की कोशिश कर रहा है ताकि के बजाय कर रहा हूँ .... 1 टैब 1 टैब 2010, जो तारीख जनवरी 1 ले जाएगी, 2010

+3

यदि आप कीप्रेसियां ​​करते हैं, तो आपको नवंबर और दिसंबर का चयन करने के लिए एक रास्ता तय करना होगा क्योंकि वे दो अंकों की संख्या हैं। यह, जैसा कि आपने कहा, गन्दा हो जाता है। मैं एक ऑटो-पूर्ण का उपयोग करने का सुझाव दूंगा, क्योंकि महीने के दो अक्षर इसे चुनने के लिए पर्याप्त होना चाहिए। – sworoc

+0

यह पूछने/हल करने का प्रयास क्या है? यह उत्तर देने में सक्षम होने के लिए बेहतर –

+0

कुडोस को लिखा जा सकता है! –

उत्तर

0

वहाँ HTML में एक accesskey विशेषता है, जो [Alt] + Character का उपयोग कर उपयोग की अनुमति निर्दिष्ट करने की अनुमति देता है है। लेकिन मैं नहीं पता है, कि क्या यह <option> के लिए काम करता है:

<select> 
    <option accesskey="1">January</option> 
    <!-- ... --> 
</select> 
+1

एचटीएमएल चश्मा से: "निम्नलिखित तत्वों का समर्थन accesskey विशेषता: एक, क्षेत्र, बटन, इनपुट, लेबल, और LEGEND, और पाठ क्षेत्र।" लेकिन परवाह किए बिना, यह अक्टूबर-दिसंबर के लिए काम नहीं करेगा और न ही यदि एक ही पृष्ठ पर कई दिनांक बॉक्स थे। – Matthew

+0

@konforce: [एचटीएमएल 5 स्टैंडर्ड] (http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#the-accesskey-attribute) अन्य तत्वों पर यह विशेषता भी अनुमति देता है , यह समस्या नहीं है। सवाल ब्राउज़र ड्रॉपडाउन के लिए यह लागू है कि क्या है;) लेकिन हाँ, तुम सही हो, स्पष्ट रूप से इसे एक से अधिक महीने के साथ असफल हो जायेगी एक पृष्ठ पर चयन करता है। – NikiC

+0

मैंने अभी कोशिश की है: फ़ायरफ़ॉक्स 4 इसका समर्थन नहीं करता है। – NikiC

2

यहाँ कैसे यह काम कर पाने के का एक उदाहरण है:

$(function() 
{ 
    $.each($("select.month"), function() { new MonthSelector(this); }); 
}); 

var MonthSelector = function(that) 
{ 
    var self = this; 
    $(that).bind("keypress", function(event) { self.onKeyPress(event); }); 
    this.two = false; 
    this.select = that; 
}; 

MonthSelector.prototype.onKeyPress = function(event) 
{ 
    if (event.which < 48 || event.which > 57) return; 
    var digit = event.which - 48; 

    if (this.two && digit <= 2) 
    { 
     digit += 10; 
     this.two = false; 
    } 
    else 
    { 
     this.two = (digit == 1); 
    } 

    if (digit != 0) 
     this.select.selectedIndex = digit - 1; 
}; 

यह कठिन सादगी की खातिर 1-12 के साथ काम करने कोडित है। (दिनांक और वर्ष ड्रॉप डाउन स्वचालित रूप से ब्राउज़र की अंतर्निहित कार्यक्षमता के आधार पर काम करना चाहिए।)

इससे दिसंबर के लिए उपयोगकर्ता की क्षमता (उदा।) प्रकार "दिसंबर" को भी प्रभावित नहीं करना चाहिए।

0

आप आसानी से जावास्क्रिप्ट के साथ ऐसा कर सकते हैं। बस एक चयनित ड्रॉप-डाउन बॉक्स (ऑनफोकस) और कीप्रेस की जांच करें, यदि 1 दबाया गया है तो पहले तत्व, 2 - सेकंड और इसी तरह का चयन करें। कुछ देरी जोड़ने की आवश्यकता हो सकती है और कई अंकों की संख्या के मामले में दूसरी कीप्रेस की प्रतीक्षा करनी पड़ सकती है।

वैकल्पिक रूप से आप कुछ मानक नहीं की कोशिश कर सकते हैं:

<label for="state">State:</label> 
<select id="state" name="state"> 
    <option accesskey="1">.1.</option> 
    <option accesskey="2">.2.</option> 
    <option accesskey="3">.3.</option> 
    <option accesskey="4">.4.</option> 
</select> 

दबाने के लिए Alt + संख्या आप ड्रॉप-डाउन में तत्वों का चयन करने में सक्षम हो जाएगा द्वारा। अपने ध्यान केंद्रित ड्रॉप-डाउन बॉक्स में गतिशील रूप से (जावास्क्रिप्ट) विकल्पों में accesskey विशेषता जोड़ें।

+0

यह "मानक नहीं" क्यों है? – NikiC

+0

-1 और अगर मेरा जवाब चोरी हो जाता है तो मैं वास्तव में इसकी सराहना नहीं करता हूं। मैं अपना वोट वापस कर दूंगा कि आप अपना जवाब अपने मूल रूप में वापस ले लेंगे। – NikiC

+0

यह मानक है क्योंकि यह w3 मानक में नहीं है (ओह!) और यह विभिन्न वेब ब्राउज़र में काम करने की गारंटी नहीं है नहीं है। चोरी हो गया? आप कितने साल के हैं, 10? यह एक दौड़ नहीं है, मैं यकीन है कि सभी टिप्पणियों ही समय के आसपास तैनात किया गया है, तो मैं भी आपके उत्तर नहीं देखा है जब मैं टाइपिंग था। –

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