我有以下html5输入元素:

<input type="number">

为什么这个输入允许在输入字段中输入字符“e”?无法输入其他字母字符(如预期的那样)

使用chrome v. 44.0.2403.107

下面的例子来看看我的意思。

= >“当家”型输入<


当前回答

我们可以像下面这样简单

<input type="number" onkeydown="javascript:返回事件。keyCode == 69 ?/> . False: true

更新后的答案

我们可以让它更简单,就像@88 MPG建议的那样

<输入类型=“编号”=“回归事件”。键盘代码!

其他回答

E代表指数,用来缩短长数字。因为输入是数学输入而指数在数学中是用来缩短数字的,所以这里有个E。

显示如下:4e。

链接:1和2

HTML输入数字类型允许“e/ e”,因为“e”代表指数,这是一个数字符号。

例200000也可以写成2e5。我希望这能帮到你,谢谢你的问题。

我们可以像下面这样简单

<input type="number" onkeydown="javascript:返回事件。keyCode == 69 ?/> . False: true

更新后的答案

我们可以让它更简单,就像@88 MPG建议的那样

<输入类型=“编号”=“回归事件”。键盘代码!

角;与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);
}

上述解决方案只适用于普通html。 对于reactJS,我建议你这样做

  <input type="number" onKeyDown={(e) =>["e", "E", "+", "-"].includes(e.key) && e.preventDefault()} >