如题,我现在有4个input,4个input从输入开始都有只能输入数字和小数点且小数点后只能输入4位小数的限制,如果输入的格式不对,比如我写了一个s进去,这个s就写不进去了,要用到key事件,应该如何解决,求解答
如题,我现在有4个input,4个input从输入开始都有只能输入数字和小数点且小数点后只能输入4位小数的限制,如果输入的格式不对,比如我写了一个s进去,这个s就写不进去了,要用到key事件,应该如何解决,求解答
<input id="input">
var input = document.getElementById('input');
var reg = /^\d+(\.)?\d{0,4}?$/;
var oldValue = ''
input.addEventListener('input',function(e){
if(reg.test(e.target.value)){
oldValue = e.target.value
}else if(e.target.value){
e.target.value = oldValue;
} else{
e.target.value = '';
oldValue = '';
}
});
input.addEventListener('change',function(e){
if(e.target.value.endsWith('.')){
e.target.value = e.target.value.slice(0,-1);
}
});
我自己常用的,可以拿去改改
function onlyNumber(num) {
var n = String(num)
var t = n.charAt(0)
// 先把非数字的都替换掉,除了数字和.
n = n.replace(/[^\d\.]/g, '')
// 必须保证第一个为数字而不是.
n = n.replace(/^\./g, '')
// 保证只有出现一个.而没有多个.
n = n.replace(/\.{2,}/g, '.')
// 保证.只出现一次,而不能出现两次以上
n = n.replace('.', '$#$').replace(/\./g, '').replace(
'$#$', '.')
// 如果第一位是负号,则允许添加
if (t === '-') {
n = '-' + n
}
return n
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决