前言:
公司的需求是输入框整数位只能录到10万位,小数位只能录入小数点后两位(此前已实现),所以结合本次需求,需要对整数位控制进行改造,搜索了js的Number类型的API,没有找到可以直接对整数位进行控制的方法。所以上网查了一番,查到三篇文章,都需要对小数点进行判断。有没有一种方法不需要判断小数点字符?代码也更简洁呢?答案在下面的代码里:
首先定义一个input输入框:
<input type="number" onkeyup="keup(this)" onchange="" name="ceshihehe" oninput="checkNum(this)" style="width: 160px;">
然后定义js脚本:
<script>
function checkNum(inputNum){
var v = inputNum.value;
var v1 = Number(v);
if(v1>999999.999){
v1= v1/10;
var v2 = v1.toFixed(0);
if((Number(v2)-Number(v1))>0){
v= Number(v2)-1;
}else{
v=Number(v2);
}
$("input[name='ceshihehe']").val(v);
}
}
function keup(obj){
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
}
</script>代码解读:
function checkNum(inputNum){//假设传入参数为:1234567
var v = inputNum.value;//第1步:读取input对象的value,并转换为Number类型赋值给v1
var v1 = Number(v);
if(v1>999999.999){//控制10万位,注意此处小数点为要写到第三位,可以自己动手试试,去掉一个9会有什么现象...
v1= v1/10;//第2步:对v1的大小进行判断,如果超过10万位,则需减位处理,此时为123456.7
var v2 = v1.toFixed(0);//第3步:对除法后的小数位进行四舍五入,此时已进位为123457
if((Number(v2)-Number(v1))>0){//第4步:进位加上了1,所以要减去,才能保证是想要的数字
v= Number(v2)-1;
}else{//假设传入参数为:123456.4,则走进这里
v=Number(v2);
}
$("input[name='ceshihehe']").val(v);//第5步:将处理完的参数传回input框
//没有集成jquery的小伙伴只能用document原生取值咯
}
}
//配合使用正则小数位控制方法
function keup(obj){
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
}
网上的三种方法,抽空也参考学习下:
方式1:
https://blog.youkuaiyun.com/limingchuan123456789/article/details/11884677
方式2:
https://blog.youkuaiyun.com/qizi_zpl/article/details/77774534
方式3:
https://blog.youkuaiyun.com/csdn131488/article/details/83507227