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+)\.(\d\d).*$/,'$1$2.$3'); // 只能輸入2個小數
    }
    if (num == 3){
        obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d).*$/,'$1$2.$3'); // 只能輸入3個小數
    }
    if (num == 4){
        obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3'); // 只能輸入4個小數
    }
    if (num == 5){
        obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d\d\d).*$/,'$1$2.$3'); // 只能輸入5個小數
    }
    if (num == 6){
        obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d\d\d\d\d).*$/,'$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
}

 三 標簽里直接

  <!--小數點后只能輸4位-->
              <el-input
                :disabled="disabled"
                @input="scope.row.count=scope.row.count.replace(/^(\-)*(\d+)\.(\d{5}).*$/, '$1$2.$3')"
                v-model="scope.row.count"
              ></el-input>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM