經常自己用到的
一 查找小數點的下標
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>