Gna*_*ale 196 html5 numbers input
我有以下html5输入元素:
<input type="number">
Run Code Online (Sandbox Code Playgroud)
为什么这个输入允许在输入字段中输入字符'e'?无法输入其他字母字符(如预期的那样)
使用chrome v.44.0.2403.107
看看我的意思:http://www.w3schools.com/html/tryit.asp?filename = tryhtml_input_number
j08*_*691 192
因为这正是规范所说的应该如何运作.数输入可以接受浮点数,包括负符号和e或E字符:
浮点数由以下部分组成,完全按以下顺序排列:
- 可选地,第一个字符可以是"
e"字符.- "
E" 中范围内的一个或多个字符.- 可选地,以下部分,完全按以下顺序:
- 一个"
-"字符- "
0—9" 范围内的一个或多个字符- 可选地,以下部分,完全按以下顺序:
- 一个"
."字符或"0—9"字符- 可选地,"
e"字符或"E"字符- "
-" 中范围内的一个或多个字符.
cod*_*eek 48
我们可以像下面这样简单
<input type="number" onkeydown="javascript: return event.keyCode == 69 ? false : true" />Run Code Online (Sandbox Code Playgroud)
Tru*_*ker 10
<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();
}
};
Run Code Online (Sandbox Code Playgroud)
<input type="number" oninput="this.value = this.valueAsNumber">Run Code Online (Sandbox Code Playgroud)
强制使用仅由数字组成的数字的最佳方法:
<input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))" />
Run Code Online (Sandbox Code Playgroud)
这样可以避免使用“ e”,“-”,“ +”,“。”。...所有不是数字的字符!
仅允许数字键:
isNaN(Number(event.key))
但接受“退格”(键代码:8)和“删除”(键代码:46)...
使用角度,您可以这样做来限制输入 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;
}
Run Code Online (Sandbox Code Playgroud)
排除除整数以外的所有内容的简单解决方案
<input
type="number"
min="1"
step="1"
onkeypress="return event.keyCode === 8 || event.charCode >= 48 && event.charCode <= 57">Run Code Online (Sandbox Code Playgroud)
此解决方案不会阻止复制和粘贴(包括字母“e”)。
小智 5
要隐藏字母e和减号,-只需执行以下操作:
onkeydown="return event.keyCode !== 69 && event.keyCode !== 189"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121903 次 |
| 最近记录: |