前端实现输入框千分符
<template>
<div class="top">
<el-card class="box-card">
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="活动名称">
<el-input v-model="form.money" @blur="inputMoneys($event,'money')"></el-input>
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
const MoneyTest =/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
const comdify = function (n) {
if(!n) return n;
let str = n.split('.');
let re =/\d{1,3}(?=(\d{3})+$)/g;
let n1=str[0].replace(re,"$&,");
return str.length > 1 && str[1] ? `${n1}.${str[1]}` : `${n1}`;
};
const delcommafy = function (num){
if(!num) return num;
num = num.toString();
num = num.replace(/,/gi,'');
return num;
}
const getInputValue = function (el) {
let inputVal = el.target.value || '';
var number = inputVal.lastIndexOf(".");
var A=inputVal.slice(number).slice(0,7);
var B=inputVal.slice(0,number)+A;
const pattern =/[`~!@#$^\-&*()=|{}':;',\\\[\]\.<>\/?~!@#¥……&*()——|{}【】';:""'。,?a-zA-Z\s]/g;
B=B.replace(pattern,"");
B=B.replace("[a-zA-Z]+","");
if(B.indexOf(".")==-1&&B!=''){
B=B+".00"
}
return comdify(delcommafy(B));
}
export default {
data() {
return {
form: {
money:''
},
};
},
methods: {
inputMoneys(el,name){
this.form.moneyVals=el.target.value || ''
this.form[name]=getInputValue(el);
},
onSubmit() {
console.log("submit!");
},
},
};
</script>