为什么types为“number”的htmlinput允许在字段中input字母“e”?

我有以下html5input元素:

<input type="number"> 

为什么此input允许在input字段中input字符“e”? 没有其他字母字符可以input(如预期)

使用chrome v。44.0.2403.107

看看我的意思: http : //www.w3schools.com/html/tryit.asp ?filename= tryhtml_input_number

因为这正是规格说明它应该如何工作。 input的数字可以接受浮点数 ,包括负号和eE字符:

浮点数由以下几部分组成,按照以下顺序:

  1. 可选地,第一个字符可以是“ - ”字符。
  2. 一个或多个字符在“ 0—9 ”范围内。
  3. (可选)按以下顺序执行以下部分:
    1. 一个“ . ”字符
    2. 0—9 ”范围内的一个或多个字符
  4. (可选)按以下顺序执行以下部分:
    1. 一个“ e ”字符或“ E ”字符
    2. 可选地包括“ - ”字符或“ + ”字符
    3. 一个或多个字符在“ 0—9 ”范围内。
 <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(); } }; 

我们可以像下面这样简单

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