2012-05-25 13 views
23

मैं निम्न मार्कअप है:क्रोम/एचटीएमएल 5: इनपुट प्रकार संख्या अधिकतम विशेषता का सम्मान नहीं कर रहा है?

<input type="number" max="99" /> 

गूगल क्रोम (और संभवतः अन्य वेबकिट ब्राउज़र) में, यह 99 से अधिक हो जाने से स्पिनर की ऊपर तीर को प्रतिबंधित करेगा, लेकिन यह एक टाइपिंग से उपयोगकर्ता को नहीं रोकता है 99 से अधिक संख्या। यहां तक ​​कि ऑनब्लर, अमान्य मान को हटाया नहीं गया है/प्रतिस्थापित किया गया है या यहां तक ​​कि एक चेतावनी भी दी गई है कि मान अमान्य है।

क्या मैं गलत तरीके से व्याख्या करता हूं कि यह कैसे काम करना है, या यह एक बग है? मैं क्रोम का नवीनतम संस्करण (लेखन के समय 1 9) का उपयोग कर रहा हूं।

संपादित करें:

स्पष्ट करने के लिए, मुझे पता है क्यों द्वारा निर्दिष्ट अधिकतम सीमा से अधिक संख्या पहली जगह में इनपुट होने के लिए अनुमति दी है चाहता हूँ। मुझे एहसास है कि यह फ़ॉर्म सबमिशन पर एक टूलटिप देता है जो आपको बताता है कि यह अमान्य है, लेकिन यह असंगत व्यवहार की तरह लगता है कि स्पिनर आपको अधिकतम से ऊपर जाने की अनुमति नहीं देगा, फिर भी आप किसी भी समय अधिकतम से ऊपर एक संख्या टाइप कर सकते हैं यह।

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

+0

वर्क्स ठीक है, मैं त्रुटि संदेश "मान से कम या बराबर 99 करने के लिए होना चाहिए" मिलता है। क्या हम आपका वास्तविक कोड देख सकते हैं? –

+0

क्रोम और ओपेरा सभी एक चेतावनी फेंकते हैं जब मैं एक फॉर्म सबमिट करने का प्रयास करता हूं जिसमें सीमा के बाहर संख्या होती है: http://jsfiddle.net/j08691/Uv3EA/ – j08691

+0

यह केवल फ़ॉर्म सबमिशन पर क्यों दिखाएगा? और सबसे महत्वपूर्ण बात यह है कि इसे पहली जगह क्यों अनुमति दी जाती है? यह स्पिनर को प्रतिबंधित करता है ताकि आप इसका उपयोग उच्च मूल्य इनपुट करने के लिए नहीं कर सकें - मैन्युअल इनपुट क्यों नहीं? और मैं इसे सीमित करने के लिए अधिकतम लम्बाई या पैटर्न का उपयोग नहीं कर सकता, क्योंकि ये संख्या प्रकार इनपुट पर लागू नहीं हैं। मैं एक जेएस kludge लिखने अटक गया हूँ ... – FtDRbwLXw6

उत्तर

8

अगर आप अपनी कोड में एक सबमिट बटन और एक फार्म डाल काम करता है लेकिन आप केवल एक त्रुटि संदेश (टूलटिप) देखें:,

<form action="#" method="get"> 
    <input type="number" max="99" /> 
    <input type="submit" value="Submit!" /> 
</form> 

jsFiddle

+4

धन्यवाद, लेकिन यह केवल एक त्रुटि संदेश दिखाता है। मैं इस बात से अधिक चिंतित हूं कि यह मूल्य को इनपुट क्यों करने की इजाजत दे रहा है जो अधिकतम स्थान से अधिकतम है। स्पिनर नियंत्रण आपको अधिकतम से ऊपर नहीं जाने देता है, तो यह आपको एक संख्या को और अधिक टाइप करने देता है? मुझे एक निरीक्षण या बग की तरह लगता है। – FtDRbwLXw6

+1

जाहिर है कि शक्तियां जो मुझे एक बग के रूप में वर्गीकृत करने से असहमत हैं। – FtDRbwLXw6

+8

यह पूरी तरह से एक बग है, कृपया उनकी निगरानी को उनके लिए पुन: स्थापित करें: सी – Vix

1

यह एक पुराने सवाल है लेकिन मुझे कहीं भी इस प्रश्न के लिए कोई प्रासंगिक उत्तर नहीं मिला। यह व्यवहार अभी भी क्रोम (संस्करण 61) में है।

मुझे कुछ छोटी सी चीजें मिली हैं जिनका उपयोग कुछ परिस्थितियों में किया जा सकता है। यह उन लोगों के लिए प्रासंगिक है जो aurelia, angular आदि जैसे डेटा-बाइंडिंग लाइब्रेरी का उपयोग करते हैं .. मैंने केवल ऑरेलिया पर परीक्षण किया - लेकिन यह दूसरों के लिए भी काम करना चाहिए।

चाल इस तथ्य पर निर्भर करती है कि प्रकार range का इनपुट min/max बाधाओं को लागू करता है।

हम बस एक और इनपुट (range टाइप करें) जो नियमित इनपुट के समान मूल्य से बंधे हैं, और हम इसे css के माध्यम से छिपाते हैं।

जब उपयोगकर्ता max मान से अधिक कुछ ऐसा इनपुट करता है, तो यह max मान पर वापस आ जाएगा।

यहाँ Aurelia में एक डेमो है: मेरे लिए https://gist.run/?id=86fc278d3837718be4691acd5625aaad

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