js保留两位小数

在项目里遇到input框只能输入数字,且只能有两位小数的需求,记录一下:


image.png
<el-table-column label="金额" prop="amt" width="120" align="right">
      <template slot-scope="scope">
         <el-input v-model="scope.row.amt" placeholder="请输入" v-if="scope.row.editable" @input="num(scope.$index, scope.row.amt)"></el-input>
         <span v-else>{{scope.row.amt}}</span>
      </template>
</el-table-column>
// 发票金额只能是数字 只保留两位小数
num(index, value){
  value = value.replace(/[^\d.]/g,""); //清除"数字"和"."以外的字符
  value = value.replace(/^\./g,""); //验证第一个字符是数字
  value = value.replace(/\.{2,}/g,"."); //只保留第一个点, 清除多余的
  value = value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
  value = value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //控制可输入的小数(\d的个数就是要保留的位数)
  this.tableData[index].amt = value
},

(ps:上面的方法我是之前百度的,但是现在找不到是哪篇文章了,如果作者大大看到了请联系我加上你的原文链接啊,对不起对不起不是有意的)

或者直接:

num(index, value){
  value = (value.match(/^\d*(\.?\d{0,2})/g)[0]) || null;//两位小数
  this.tableData[index].amt = value
},

啊我前几天看的正则是又学到狗肚子里了吗怎么还是看不懂!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。