我有以下html5输入元素:
<input type="number">
为什么这个输入允许在输入字段中输入字符“e”?无法输入其他字母字符(如预期的那样)
使用chrome v. 44.0.2403.107
下面的例子来看看我的意思。
= >“当家”型输入<
我有以下html5输入元素:
<input type="number">
为什么这个输入允许在输入字段中输入字符“e”?无法输入其他字母字符(如预期的那样)
使用chrome v. 44.0.2403.107
下面的例子来看看我的意思。
= >“当家”型输入<
当前回答
<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:返回事件。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输入数字类型允许“e/ e”,因为“e”代表指数,这是一个数字符号。
例200000也可以写成2e5。我希望这能帮到你,谢谢你的问题。
E代表指数,用来缩短长数字。因为输入是数学输入而指数在数学中是用来缩短数字的,所以这里有个E。
显示如下:4e。
链接:1和2
<input type="number" onkeydown="javascript: return ['Backspace','Delete','ArrowLeft','ArrowRight'].includes(event.code) ?isNaN(Number(event.key)) && event.code!= =‘空间’" / >