小言_互联网的博客

element-ui实现input输入框金额数字添加千分位组件

313人阅读  评论(0)

创建一个amountFormat.js


  
  1. const MoneyTest = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
  2. // 金额添加千分位
  3. const comdify = function (n) {
  4. if(!n) return n;
  5. let str = n.split( '.');
  6. let re = /\d{1,3}(?=(\d{3})+$)/g;
  7. let n1 = str[ 0].replace(re, "$&,");
  8. return str.length > 1 && str[ 1] ? `${n1}.${str[1]}` : `${n1}.00`;
  9. };
  10. //去除千分位中的‘,’
  11. const delcommafy = function (num){
  12. if(!num) return num;
  13. num = num.toString();
  14. num = num.replace( /,/gi, '');
  15. return num;
  16. };
  17. const valdateFn = function (rule,val,cb) {
  18. setTimeout( () => {
  19. if(val) {
  20. let inputVal = delcommafy(val);
  21. if (rule.test(inputVal)) {
  22. cb()
  23. } else {
  24. cb( '只能是数字金额,最多两位小数')
  25. }
  26. }
  27. cb()
  28. })
  29. }
  30. // 验证金额数字可以为负数
  31. const moneyValid = function (rule,val,cb) {
  32. valdateFn( /((^-?[1-9]\d*)|^-?0)(\.\d{0,2}){0,1}$/,val,cb);
  33. };
  34. // 验证金额数字不可以为负数
  35. const moneyNValid = function (rule,val,cb) {
  36. valdateFn(MoneyTest,val,cb);
  37. };
  38. // 获取输入框的值
  39. // const getInputValue = function (el) {
  40. // let inputVal = el.target.value || '';
  41. // return comdify(delcommafy(inputVal));
  42. // };
  43. // 获取输入框的值
  44. export const getInputValue = (el) =>{
  45. let inputVal = el.target.value || '';
  46. return comdify(delcommafy(inputVal));
  47. };

vue页面中的使用

import { getInputValue } from "@/utils/amountFormat.js";


   
  1. template中:
  2. <el-input
  3. style= "width: 220px"
  4. placeholder= "请输入注册资本"
  5. v-model.number= "formData.registCaptial"
  6. @blur= "inputMoneyFomet($event, 'registCaptial')"
  7. clearable
  8. :disabled= "detailFlag === 1 ? true : false"
  9. ></el-input>
  10. javascipet中:
  11. inputMoneyFomet(el, name) {
  12. this.formData[name] = getInputValue(el);
  13. },

 


转载:https://blog.csdn.net/xh_960125/article/details/114387755
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场