为什么html输入类型为" number"允许这封信' e'要进入现场?

时间:2015-07-29 16:53:57

标签: html5 input numbers

我有以下html5输入元素:

<input type="number">

为什么这个输入允许字符&#39; e&#39;要在输入字段中输入?没有其他字母字符可以输入(如预期的那样)

使用chrome v.44.0.2403.107

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

10 个答案:

答案 0 :(得分:168)

因为这正是the spec所说的应该如何运作。输入的数字可以接受floating-point numbers,包括否定符号和eE字符(其中指数是eE后面的数字):

  

浮点数完全由以下部分组成   以下顺序:

     
      
  1. 可选地,第一个字符可以是“-”字符。
  2.   
  3. 0—9”范围内的一个或多个字符。
  4.   
  5. 可选地,以下部分,完全按以下顺序:      
        
    1. .”字符
    2.   
    3. 0—9
    4. 范围内的一个或多个字符   
  6.   
  7. 可选地,以下部分,完全按以下顺序:      
        
    1. e”字符或“E”字符
    2.   
    3. 可选地,“-”字符或“+”字符
    4.   
    5. 0—9”范围内的一个或多个字符。
    6.   
  8.   

答案 1 :(得分:38)

我们可以像下面那样简单

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

更新的答案

我们可以让它更简单,因为@ 88 MPG建议

&#13;
&#13;
<input type="number" onkeydown="return event.keyCode !== 69" />
&#13;
&#13;
&#13;

答案 2 :(得分:14)

HTML输入数字类型允许&#34; e / E&#34;因为&#34; e&#34;代表指数,这是一个数字符号。

示例200000也可以写为2e5。我希望这有助于感谢您提出这个问题。

答案 3 :(得分: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();
    }
};

答案 4 :(得分:3)

要同时隐藏字母e和负号-,只需:

onkeydown="return event.keyCode !== 69 && event.keyCode !== 189"

答案 5 :(得分:2)

强制使用仅由数字组成的数字的最佳方法:

<input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))" />

这避免了'e','-','+','。 ...

仅允许数字键:

  

isNaN(Number(event.key))

但是接受“退格”(键代码:8)和“删除”(键代码:46)...

答案 6 :(得分:2)

使用角度,您可以这样做来限制输入e,+,-,E

 <input type="number"  (keypress)="numericOnly($event)"/>


  numericOnly(event): boolean { // restrict e,+,-,E characters in  input type number
    debugger
    const charCode = (event.which) ? event.which : event.keyCode;
    if (charCode == 101 || charCode == 69 || charCode == 45 || charCode == 43) {
      return false;
    }
    return true;

  }

答案 7 :(得分:2)

E代表指数,用于缩短长整数。由于输入是数学输入,并且指数采用数学运算以缩短大数,所以这就是为什么会有E的原因。

它显示为:4e2

如果您想了解更多信息,请点击这里。

https://www.cyberdefinitions.com/definitions/E.html

http://mathforum.org/library/drmath/view/57140.html#:~:text=The%20e%20stands%20for%20Exponent,multiplied%20by%2010%20sixteen%20times)。

答案 8 :(得分:1)

一种排除整数以外的所有内容的简单解决方案

<input  
    type="number"
    min="1" 
    step="1"
    onkeypress="return event.keyCode === 8 || event.charCode >= 48 && event.charCode <= 57">

答案 9 :(得分:0)

角度;不推荐使用IDE keyCode警告

在功能上与rinku的答案相同,但具有IDE警告预防功能

numericOnly(event): boolean {
    // noinspection JSDeprecatedSymbols
    const charCode = (event.which) ? event.which : event.key || event.keyCode;  // keyCode is deprecated but needed for some browsers
    return !(charCode === 101 || charCode === 69 || charCode === 45 || charCode === 43);
}