输入数字和小数,小数最多3位,整体长度最多6位(包含小数点)
<div>
<label for="input3">输入数字和小数,小数最多3位,整体长度最多6位(包含小数点)</label>
<input id="input3" type="text" onkeyup="numLimit3(this)" onafterpaste="numLimit3(this)">
</div>
<script>
//限制只能输入数字和小数的部分:
function numLimit3(obj){//日次数为数字,允许3位小数
var str = obj.value;
var len1 = str.substr(0, 1);
var len2 = str.substr(1, 1);
//如果第一位是0,第二位不是点,就用数字把点替换掉
if (str.length > 1 && len1 == 0 && len2 != ".") {
str = str.substr(1, 1);
}
//第一位不能是.
if (len1 == ".") {
str = "";
}
//限制只能输入三个小数点
if (str.indexOf(".") != -1) {
var str_ = str.substr(str.indexOf(".") + 1);
if (str_.indexOf(".") != -1) {//两个小数点
str = str.substr(0, str.indexOf(".") + str_.indexOf(".") + 1);
}else{//一个小数点
if(str_.length>3){
str = str.substr(0, str.indexOf(".") + 3 + 1);
}
}
}
//正则替换,保留数字和小数点
str = str.replace(/[^\d^\.]+/g,'');
str = str.replace(/\.\d\d\d\d$/,'');
//最多输入6位(包含小数点)
if(str.length>6){
str = str.slice(0,6);
}
//回显操作后的数据给input框*
obj.value = str;
// console.log(str.length)
}
</script>
补充:
1、只能输入整数
首位不可以是0:
<input id="" type="text"
onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"
/>
首位可以是0:
onkeyup = "value=value.replace(/[^\d]/g,'')" onafterpaste= "value=value.replace(/[^\d]/g,'')"
2、可以输入小数
如果限制小数位数:numLimit(this,1)
如果不限制小数位数:numLimit(this,false)
function numLimit(obj,num){
var str = obj.value;
var len1 = str.substr(0, 1);
var len2 = str.substr(1, 1);
//如果第一位是0,第二位不是点,就用数字把点替换掉
if (str.length > 1 && len1 == 0 && len2 != ".") {
str = str.substr(1, 1);
}
//第一位不能是.
if (len1 == ".") {
str = "";
}
//限制只能输入的小数点位数
if (str.indexOf(".") != -1) {
var str_ = str.substr(str.indexOf(".") + 1);
if (str_.indexOf(".") != -1) {//如果出現两个小数点,就只要第二个小数点之前的部分
str = str.substr(0, str.indexOf(".") + str_.indexOf(".") + 1);
console.log(str)
}else{//一个小数点
if(num){//如果是数字就限制小数位数,如果是false则不限制小数位数
if(str_.length>num){
str = str.substr(0, str.indexOf(".") + num + 1);
}
}
}
}
//正则替换,保留数字和小数点
str = str.replace(/[^\d^\.]+/g,'');
str = str.replace(/\.\d{num+1}$/,'');
//回显操作后的数据给input框*
obj.value = str;
}