我有以下html5输入元素:

<input type="number">

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

使用chrome v. 44.0.2403.107

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

= >“当家”型输入<


当前回答

一个简单的解决方案,排除除整数

<输入 类型=“数字” min=“1” 步骤=“1” onkeypress=“return event.keyCode === 8 ||事件.字符代码 >= 48 &&; 事件.字符代码 <= 57“>

此解决方案不防止复制和粘贴(包括字母“e”)。

其他回答

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

使用angular,你可以限制输入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;

  }

一个简单的解决方案,排除除整数

<输入 类型=“数字” min=“1” 步骤=“1” onkeypress=“return event.keyCode === 8 ||事件.字符代码 >= 48 &&; 事件.字符代码 <= 57“>

此解决方案不防止复制和粘贴(包括字母“e”)。

要隐藏字母e和负号,可以这样做:

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

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

<input type="number" onkeydown="javascript: return ['Backspace','Delete','ArrowLeft','ArrowRight'].includes(event.code) ?isNaN(Number(event.key)) && event.code!= =‘空间’" / >

这避免了'e', '-', '+', '。“…所有不是数字的字符!

若要只允许数字键,请使用数字函数转换为数字。如果不是数字,则结果为NaN:

isNaN(当家(基)事件。

但接受退格,删除,左箭头,右箭头:

[个’,‘删除’‘ArrowLeft’,‘ArrowRight includes(事件。代码)

这是为允许空格的Firefox设置的:

event.code != =“空间”