2013-02-21 16 views
6

मुझे किसी फॉर्म पर संख्या इनपुट के साथ कोई समस्या है। जब मैं कोई संख्या दर्ज करता हूं, तो 88.2 कहें और सबमिट करें, कोई समस्या नहीं है। लेकिन जब यह अन्य व्यक्ति वही करता है, तो आप php कोड में देख सकते हैं यदि आप संख्या इनपुट से चर को प्रतिबिंबित करते हैं, तो उसने दशमलव बिंदु (.) हटा दिया है।एचटीएमएल संख्या इनपुट दशमलव बिंदु को हटा देता है?

यह एक अल्पविराम का उपयोग करते समय अपना दशमलव बिंदु नहीं हटाता है, हालांकि, जब मैं कॉमा का उपयोग करता हूं तो यह मेरे लिए हटा देता है। क्या इसे ठीक करने और इसे स्वीकार करने का कोई तरीका है "।" दशमलव बिंदु के रूप में?

<input id="version" name="version" step="0.1" min="1.0" max="250.0" type="number" class="input-small" placeholder="87.2"></input> 

PHP कोड है कि असामान्य है में कुछ भी नहीं है, केवल

echo $_POST['version']; 

input-small css:

यहाँ इनपुट है

.input-small { 
    width: 90px; 
} 
+0

मेरा मानना ​​है कि '' वैध मान के रूप में पूर्णांकों स्वीकार करता है। अनुमति दी गई किसी भी दशमलव ब्राउज़र शायद ब्राउज़र द्वारा गलत/अनुपूरक सत्यापन है। –

+2

नोट: यूरोपीय लोग दशमलव चिह्न के लिए अल्पविराम का उपयोग करते हैं। क्या आप कहीं संस्कृति सेटिंग को मजबूर कर सकते हैं? –

+0

मुझे पता है कि हम अलग-अलग अंक का उपयोग करते हैं, लेकिन क्या इसे डॉट को हटाने के लिए कोई रास्ता नहीं है? यदि दूसरा लड़का 88.2 में प्रवेश करता है तो यह 882 के रूप में आता है, यह वास्तव में कष्टप्रद है। –

उत्तर

2

Support to <input type=number> अभी भी बहुत सीमित है, अपूर्ण, और बी uggy।

उदाहरण के लिए, आईई 10 और फ़ायरफ़ॉक्स 1 पर कोई समर्थन नहीं है। उन पर, तत्व <input type=text> तत्व पर वापस आ जाता है, जिसका अर्थ है कि किसी भी स्ट्रिंग को इनपुट के रूप में स्वीकार किया जाता है और सर्वर को इस तरह से पास किया जाता है, बिना जांच के ।

क्रोम, जैसे व्यवहार का समर्थन करने वाले ब्राउज़र पर, व्यवहार भिन्न होता है, और अलग-अलग होने की उम्मीद है, क्योंकि एचटीएमएल 5 सीआर definition जानबूझकर इसे खोल देता है: ब्राउजर को संख्यात्मक इनपुट के लिए विजेट प्रदान करना आवश्यक है और गारंटी है कि अंततः सर्वर को भेजे गए डेटा तत्व के गुणों के अनुसार सही है (दी गई सीमा के भीतर, आदि)।

प्रैक्टिस में, कार्यान्वयन ब्राउज़र के लोकेल पर निर्भर करता है, और आप इसे लेखक के रूप में नियंत्रित नहीं कर सकते हैं। इसका मतलब है कि एक ब्राउज़र 88.2 स्वीकार कर सकता है, या यह 88,2 (और आंतरिक रूप से इसे 88.2 में परिवर्तित कर सकता है) स्वीकार कर सकता है, या यह दोनों स्वीकार कर सकता है, या सिद्धांत रूप में, केवल हाइरोग्लिफ में इनपुट स्वीकार कर सकता है (और आंतरिक रूप से इसे परिवर्तित कर सकता है कानूनी फॉर्म)। यह उपयोगकर्ता इनपुट को भी पार्स कर सकता है ताकि किसी भी अतिरिक्त अक्षर को त्याग दिया जा सके, जिसका अर्थ है कि 88 एफओओ और 88.2 को 88 को छोटा कर दिया जा सकता है जब अल्पविराम दशमलव विभाजक होता है।

आपके मामले में क्या होता है यह तय करना मुश्किल है, क्योंकि ब्राउज़र और प्लेटफ़ॉर्म का वर्णन नहीं किया गया है, और यह स्पष्ट नहीं है कि सर्वर क्या प्राप्त करता है। लेकिन महत्वपूर्ण बात यह है कि <input type=number> पर भरोसा नहीं किया जा सकता है। इसका उपयोग एक नियंत्रित वातावरण में किया जा सकता है जहां हर कोई एक ही ऑपरेटिंग सिस्टम में उसी संस्करण के समान संस्करण का उपयोग करता है, जिसमें भाषा संस्करण और लोकेल सेटिंग्स शामिल हैं। अन्यथा, संख्यात्मक इनपुट के लिए <input type=text> का उपयोग करें और इनपुट सर्वर-पक्ष को पार्स करें और वैकल्पिक रूप से इसे क्लाइंट-साइड प्री-चेक करें, और सुनिश्चित करें कि आप इनपुट के अपेक्षित प्रारूप (जैसे दशमलव अल्प बनाम दशमलव बिंदु) के उपयोगकर्ता को सूचित करते हैं।

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