js的number输入框限制只能输入数字两位小数点不能为负数
可以使用正则表达式来限制输入框只能输入数字和两位小数,同时可以在输入框的 onkeydown 事件中判断输入的内容是否符合要求,如果不符合则阻止输入。以下是示例代码:
HTML:
<input type="text" id="myInput">
JavaScript:
var myInput = document.getElementById("myInput");
myInput.addEventListener("keydown", function(event) {
// 获取用户按下的键码
var keyCode = event.keyCode || event.which;
// 允许数字、小数点和退格键
if (keyCode == 8 || keyCode == 46 || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode == 190 || keyCode == 110) {
// 如果已经存在一个小数点,则禁止再次输入小数点
if ((event.target.value.indexOf(".") != -1) && (keyCode == 190 || keyCode == 110)) {
event.preventDefault();
}
// 如果已经输入了两位小数,则禁止再次输入数字
if ((event.target.value.indexOf(".") != -1) && (event.target.value.split(".")[1].length == 2) && (keyCode >= 48 && keyCode <= 57)) {
event.preventDefault();
}
} else {
event.preventDefault();
}
});
// 防止粘贴非法字符
myInput.addEventListener("paste", function(event) {
event.preventDefault();
var text = event.clipboardData.getData("text/plain");
var regex = /^(\d*)(\.\d{0,2})?$/;
if (regex.test(text)) {
this.value = text;
}
});
这段代码会监听输入框的 keydown 和 paste 事件:
- 在
keydown事件中,首先判断用户按下的键是否为数字、小数点或退格键,如果不是则阻止输入。如果是数字或小数点,则判断当前输入框中已经存在的小数点个数和小数位数,如果超过限制则阻止输入。 - 在
paste事件中,首先阻止默认的粘贴操作。然后获取剪贴板中的纯文本内容,使用正则表达式判断是否符合要求,如果符合则将内容赋值给输入框,否则不做任何操作。
这样就可以限制输入框只能输入数字和两位小数点,并且防止用户粘贴非法字符。
原文地址: https://www.cveoy.top/t/topic/bo0E 著作权归作者所有。请勿转载和采集!