我有以下html5输入元素:
<input type="number">
为什么这个输入允许字符&#39; e&#39;要在输入字段中输入?没有其他字母字符可以输入(如预期的那样)
使用chrome v.44.0.2403.107
看看我的意思:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_number
答案 0 :(得分:168)
因为这正是the spec所说的应该如何运作。输入的数字可以接受floating-point numbers,包括否定符号和e
或E
字符(其中指数是e
或E
后面的数字):
浮点数完全由以下部分组成 以下顺序:
- 可选地,第一个字符可以是“
-
”字符。- “
0—9
”范围内的一个或多个字符。- 可选地,以下部分,完全按以下顺序:
- “
.
”字符- “
范围内的一个或多个字符0—9
”- 可选地,以下部分,完全按以下顺序:
醇>
- “
e
”字符或“E
”字符- 可选地,“
-
”字符或“+
”字符- “
0—9
”范围内的一个或多个字符。
答案 1 :(得分:38)
我们可以像下面那样简单
<input type="number" onkeydown="javascript: return event.keyCode == 69 ? false : true" />
&#13;
更新的答案
我们可以让它更简单,因为@ 88 MPG建议
<input type="number" onkeydown="return event.keyCode !== 69" />
&#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
如果您想了解更多信息,请点击这里。
答案 8 :(得分:1)
一种排除整数以外的所有内容的简单解决方案
<input
type="number"
min="1"
step="1"
onkeypress="return event.keyCode === 8 || event.charCode >= 48 && event.charCode <= 57">
答案 9 :(得分:0)
在功能上与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);
}