我有以下html5输入元素:
<input type="number">
为什么这个输入允许在输入字段中输入字符“e”?无法输入其他字母字符(如预期的那样)
使用chrome v. 44.0.2403.107
下面的例子来看看我的意思。
= >“当家”型输入<
我有以下html5输入元素:
<input type="number">
为什么这个输入允许在输入字段中输入字符“e”?无法输入其他字母字符(如预期的那样)
使用chrome v. 44.0.2403.107
下面的例子来看看我的意思。
= >“当家”型输入<
当前回答
如果你按下一个键,它的计算机语言相当于69,它就不会输入
<input
type="number"
onkeydown="return event.keyCode !== 69"
/>
其他回答
因为这正是规范所规定的。数字输入可以接受浮点数,包括负号和e或e字符(其中指数是e或e后面的数字):
A floating-point number consists of the following parts, in exactly the following order: Optionally, the first character may be a "-" character. One or more characters in the range "0—9". Optionally, the following parts, in exactly the following order: a "." character one or more characters in the range "0—9" Optionally, the following parts, in exactly the following order: a "e" character or "E" character optionally, a "-" character or "+" character One or more characters in the range "0—9".
<input type="number" onkeydown="javascript: return ['Backspace','Delete','ArrowLeft','ArrowRight'].includes(event.code) ?isNaN(Number(event.key)) && event.code!= =‘空间’" / >
<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();
}
};
如果你按下一个键,它的计算机语言相当于69,它就不会输入
<input
type="number"
onkeydown="return event.keyCode !== 69"
/>
要隐藏字母e和负号,可以这样做:
onkeydown="return event.keyCode !== 69 && event.keyCode !== 189"