关于vue.js:vue-中-输入框只能输入固定位数的小数处理方法备忘

<a-input @input="FC.numDxsCheck(form, 2, 'name')" v-model="form.name" :maxLength="50" placeholder="请输出" />

/**
 *  带小数点的数字输出 - 默认4为小数
 *  例如:FC.numDxsCheck(form, 3,'phone')
 *  form:表单对象,其中包含phone
 *  ws:几位小数
 *  key:键名不叫phone时须要传入新的键名
 * */
export function numDxsCheck(form, ws, key){
  if(key === undefined){
    key = "cost";
  }
  form[key] = form[key] + "";

  //先把非数字的都替换掉,除了数字和.
  form[key] = form[key].replace(/[^\d.]/g,"");
  //必须保障第一个为数字而不是.
  form[key] = form[key].replace(/^\./g,"");
  //保障只有呈现一个.而没有多个.
  form[key] = form[key].replace(/\.{2,}/g,".");
  //保障.只呈现一次,而不能呈现两次以上
  form[key] = form[key].replace(".","$#$").replace(/\./g,"").replace("$#$",".");

  //只能输出4个小数
  let c = null;
  switch(ws) {
    case 1:
      c = /^(\-)*(\d+)\.(\d).*$/;
    case 2:
      c = /^(\-)*(\d+)\.(\d\d).*$/;
      break;
    case 3:
      c = /^(\-)*(\d+)\.(\d\d\d).*$/;
      break;
    case 4:
      c = /^(\-)*(\d+)\.(\d\d\d\d).*$/;
      break;
    default:
      c = /^(\-)*(\d+)\.(\d\d).*$/;
  }
  //只能输出两个小数
  form[key] = form[key].replace(c,'$1$2.$3');
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理