js实现input整数位,小数位位数的控制

2 篇文章 0 订阅
2 篇文章 0 订阅

前言:

公司的需求是输入框整数位只能录到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.csdn.net/limingchuan123456789/article/details/11884677

方式2:

https://blog.csdn.net/qizi_zpl/article/details/77774534

方式3:

https://blog.csdn.net/csdn131488/article/details/83507227

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值