为什么types为“number”的htmlinput允许在字段中input字母“e”?
我有以下html5input元素:
<input type="number">
为什么此input允许在input字段中input字符“e”? 没有其他字母字符可以input(如预期)
使用chrome v。44.0.2403.107
看看我的意思: http : //www.w3schools.com/html/tryit.asp ?filename= tryhtml_input_number
因为这正是规格说明它应该如何工作。 input的数字可以接受浮点数 ,包括负号和e
或E
字符:
浮点数由以下几部分组成,按照以下顺序:
- 可选地,第一个字符可以是“
-
”字符。- 一个或多个字符在“
0—9
”范围内。- (可选)按以下顺序执行以下部分:
- 一个“
.
”字符- “
0—9
”范围内的一个或多个字符- (可选)按以下顺序执行以下部分:
- 一个“
e
”字符或“E
”字符- 可选地包括“
-
”字符或“+
”字符- 一个或多个字符在“
0—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(); } };
我们可以像下面这样简单
<input type="number" onkeydown="javascript: return event.keyCode == 69 ? false : true" />