JavaScript 数字输入框限制:两位小数,禁止负数
可以使用正则表达式来限制输入框只能输入数字和两位小数,同时可以在输入框的 '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 = /^([0-9]*)(.[0-9]{0,2})?$/;
if (regex.test(text)) {
this.value = text;
}
});
这段代码会监听输入框的 'keydown' 和 'paste' 事件:
- 在 'keydown' 事件中,首先判断用户按下的键是否为数字、小数点或退格键,如果不是则阻止输入。如果是数字或小数点,则判断当前输入框中已经存在的小数点个数和小数位数,如果超过限制则阻止输入。
- 在 'paste' 事件中,首先阻止默认的粘贴操作。然后获取剪贴板中的纯文本内容,使用正则表达式判断是否符合要求,如果符合则将内容赋值给输入框,否则不做任何操作。
这样就可以限制输入框只能输入数字和两位小数点,并且防止用户粘贴非法字符。
原文地址: https://www.cveoy.top/t/topic/mRSQ 著作权归作者所有。请勿转载和采集!