2015-07-29 7 views
92

मैं निम्नलिखित एचटीएमएल 5 इनपुट तत्व है:"संख्या" के साथ एचटीएमएल इनपुट फ़ील्ड में अक्षर 'ई' दर्ज करने की अनुमति क्यों देता है?

<input type="number"> 

क्यों इस इनपुट चरित्र 'ई' के लिए अनुमति इनपुट क्षेत्र में दर्ज किए जाने की है? कोई अन्य वर्णमाला चरित्र दर्ज किए जाने की (उम्मीद के रूप में)

क्रोम वी का उपयोग सक्षम है 44.0.2403.107

देखने के लिए मैं क्या मतलब है:। http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number

+1

नीचे यह भी आप में प्रवेश करने के लिए +, की अनुमति देता है यह बहुत आसान कर सकते हैं - और '.' कई बार कुछ ब्राउज़रों में। –

उत्तर

104

क्योंकि वह the spec वास्तव में कैसे कहते हैं कि यह काम करना चाहिए है। संख्या इनपुट floating point numbers स्वीकार कर सकते हैं नकारात्मक प्रतीकों और e या E चरित्र सहित:

एक फ्लोटिंग प्वाइंट संख्या निम्न क्रम बिल्कुल में, निम्नलिखित हिस्से होते हैं:

  1. वैकल्पिक रूप से, पहला चरित्र "-" चरित्र हो सकता है।
  2. "" श्रेणी में एक या अधिक वर्ण।
  3. वैकल्पिक रूप से, निम्नलिखित भागों, वास्तव में इस क्रम में:
    1. एक "." चरित्र
    2. एक या अधिक रेंज में अक्षरों "0—9"
  4. वैकल्पिक रूप से, निम्नलिखित भागों, वास्तव में इस क्रम में:
    1. एक "e" चरित्र या "E" चरित्र
    2. वैकल्पिक रूप से, एक "-" चरित्र या "+" चरित्र
    3. एक या अधिक रेंज "0—9" में पात्रों।
+1

आह, धन्यवाद। मैं [गलत spec] में देख रहा था (http://dev.w3.org/html5/html-author/) – Gnarlywhale

+0

मैं अभी भी इस से परेशान हूं, सबसे पहले मैं गणितज्ञ नहीं हूं, तो " ई "एक संख्या के संदर्भ में खड़े हो जाओ? दूसरा मुझे नहीं मिलता है क्यों इनपुट.वल्यू एक खाली स्ट्रिंग है जैसे ही आप इसमें "ई" लिखते हैं, भले ही संख्याएं हों और चरित्र की अनुमति हो ... – Simon

+0

@ सिमोन यह एक्सपोनेंट है, आप इसे देख सकते हैं कार्रवाई में यदि आप बड़ी संख्या में बड़ी संख्या में गुणा करते हैं और कैलकुलेटर में इसे प्रदर्शित करने के लिए पर्याप्त समर्थित अंक नहीं हैं। कोई भी जो गणित में बेहतर है, उसे बेहतर समझा सकता है। –

7
<input type="number" onkeydown="return FilterInput(event)" onpaste="handlePaste(event)" > 

function FilterInput(event) { 
    var keyCode = ('which' in event) ? event.which : event.keyCode; 

    isNotWanted = (keyCode == 69 || keyCode == 101); 
    return !isNotWanted; 
}; 
function handlePaste (e) { 
    var clipboardData, pastedData; 

    // Get pasted data via clipboard API 
    clipboardData = e.clipboardData || window.clipboardData; 
    pastedData = clipboardData.getData('Text').toUpperCase(); 

    if(pastedData.indexOf('E')>-1) { 
     //alert('found an E'); 
     e.stopPropagation(); 
     e.preventDefault(); 
    } 
}; 
+2

आप कितने आश्वस्त हैं कि यह प्रतिलिपि के साथ 'ई' चरित्र डालने से रोक देगा और पेस्ट कार्यक्षमता? – StephenKelzer

+1

बस चेक किया गया, आप सही हैं, यह प्रतिलिपि और चिपकाए गए इनपुट के लिए काम नहीं करता है। – Gnarlywhale

+0

आप सही @StephenKelzer हैं। मैंने इसे संभालने के लिए कोड जोड़ा। – TruthSeeker

10

हम जैसे

<input type="number" onkeydown="javascript: return event.keyCode == 69 ? false : true" />

+1

'वापसी ईवेंट.कीकोड! == 69' का उपयोग करने के लिए बेहतर है क्योंकि यह एक अनावश्यक टर्नरी ऑपरेटर से बचाता है। साथ ही इनलाइनिंग की भी सिफारिश नहीं की जाएगी। –

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

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