📅  最后修改于: 2023-12-03 15:28:49.924000             🧑  作者: Mango
有时候我们的输入框允许用户输入数字,但是输入的数字中可能会包含科学计数法中的 e、符号 + 和 -,这可能会导致我们获取到不正确的数字。本文将介绍一些方法来防止用户从数字输入中输入 e、+、-。
HTML 5 中提供了一种新的 Input 类型叫做 number,可以限制用户只输入数字。但是,这种类型并不能完全解决这个问题,因为用户仍然可以通过键盘输入 e、+、-,虽然这些字符不会出现在输入框中。所以我们需要使用 JavaScript 来进一步限制用户的输入。
<input type="number" id="input">
我们可以使用正则表达式来限制用户的输入,只允许用户输入数字和小数点。
const input = document.querySelector('#input');
input.addEventListener('input', function() {
this.value = this.value.replace(/[^0-9.]/g, '');
});
这段代码中,我们使用了 input 事件来监听用户的输入,使用了 replace() 方法来替换非数字和小数点的字符。
我们还可以使用事件监听来限制用户输入。这个方法适用于老版本的浏览器(IE9 及以下版本)。
const input = document.querySelector('#input');
input.addEventListener('keypress', function(event) {
const key = event.which || event.keyCode;
const char = String.fromCharCode(key);
if (!/[\d.]/.test(char)) {
event.preventDefault();
}
});
这个方法中,我们使用了 keypress 事件来监听用户的按键。我们使用了 test() 方法来检测字符是否是数字和小数点,如果不是,则阻止默认行为。
使用这些方法可以很好地防止用户从数字输入中输入 e、+、-。我们可以根据自己的需求选择适合自己的解决方案。