zoukankan      html  css  js  c++  java
  • js的小数位数和保留小数点四位数字等验证

    经常自己用到的

    一 查找小数点的下标

               price = price + ''; // 数字转字符串或者tostring()
                    var priceIndex = price.indexOf(".") + 1; // 小数位置
                    var priceCount = price.length - priceIndex; // 获取小数点后的位数
                    console.log(priceCount ); // 这个就是
                    // 判断是不是大于4位小数
                    if(priceCount > 4){
                       console.log("小数点位数大于4")
                    }else{
                       console.log("小数点位数不大于4")
                    }
                              
                                  

    二 小数点的验证

    html部分:

    <!--保留小数点2位-->
    <input type='text' value='' onkeyup='checkingNumber(this,2)'>

    js部分:

    // 小数验证
    function checkingNumber(obj,num) {
        obj.value = obj.value.replace(/[^d.]/g,""); // 清除"数字"和"."以外的字符
        obj.value = obj.value.replace(/^./g,""); // 验证第一个字符是数字
        obj.value = obj.value.replace(/.{2,}/g,"."); // 只保留第一个, 清除多余的
        obj.value = obj.value.replace(".","$#$").replace(/./g,"").replace("$#$",".");
        if (num == 0){
            obj.value = obj.value.replace(/^0(0+)|[^d]+/g,'');// 只能整数
        }
        if (num == 1){
            obj.value = obj.value.replace(/^(-)*(d+).(d).*$/,'$1$2.$3'); // 只能输入1个小数
        }
        if (num == 2){
            obj.value = obj.value.replace(/^(-)*(d+).(dd).*$/,'$1$2.$3'); // 只能输入2个小数
        }
        if (num == 3){
            obj.value = obj.value.replace(/^(-)*(d+).(ddd).*$/,'$1$2.$3'); // 只能输入3个小数
        }
        if (num == 4){
            obj.value = obj.value.replace(/^(-)*(d+).(dddd).*$/,'$1$2.$3'); // 只能输入4个小数
        }
        if (num == 5){
            obj.value = obj.value.replace(/^(-)*(d+).(ddddd).*$/,'$1$2.$3'); // 只能输入5个小数
        }
        if (num == 6){
            obj.value = obj.value.replace(/^(-)*(d+).(dddddd).*$/,'$1$2.$3'); // 只能输入6个小数
        }
        if(obj.value.indexOf(".") < 0 && obj.value !=""){// 此处控制的是以上如果没有小数点,首位不能为类似于 01、02的数值
            obj.value = parseFloat(obj.value);
        }
        obj.value = isNaN(obj.value) ? 0 : obj.value; // 不让显示NAN
    }

    总结优化

    // 小数验证
    function checkingNumber(obj,n) {
        obj.value = obj.value.replace(/[^d.]/g,""); // 清除"数字"和"."以外的字符
        obj.value = obj.value.replace(/^./g,""); // 验证第一个字符是数字
        obj.value = obj.value.replace(/.{2,}/g,"."); // 只保留第一个, 清除多余的
        obj.value = obj.value.replace(".","$#$").replace(/./g,"").replace("$#$",".");
        if (num == 0){
            obj.value = obj.value.replace(/^0(0+)|[^d]+/g,'');// 只能整数
        }else{
            // 保存n个小数
             obj.value = obj.value.replace(/^(-)*(d+).(d{n}).*$/,'$1$2.$3');         // 只能输入n个小数
        }
        if(obj.value.indexOf(".") < 0 && obj.value !=""){// 此处控制的是以上如果没有小数点,首位不能为类似于 01、02的数值
            obj.value = parseFloat(obj.value);
        }
        obj.value = isNaN(obj.value) ? 0 : obj.value; // 不让显示NAN
    }
  • 相关阅读:
    Luogu P1247 取火柴游戏
    Luogu P2148 [SDOI2009]E&D
    Luogu P3305 [SDOI2013]费用流 二分 网络流
    NTT学习笔记
    Luogu P4015 运输问题
    Lucas定理学习笔记(没有ex_lucas)
    Luogu P2613 【模板】有理数取余
    欧拉定理与扩展欧拉定理学习笔记
    BSGS与exBSGS学习笔记
    Luogu P3868 [TJOI2009]猜数字
  • 原文地址:https://www.cnblogs.com/wangduojing/p/12612280.html
Copyright © 2011-2022 走看看