input输入框输入数字或小数后每隔三位按逗号分隔,小数只能输入两位

tech2023-05-22  111

标题input输入框输入数字或小数后每隔三位按逗号分隔,小数只能输入两位

// value是当前input输入的值,name是表单中绑定的当前input的key值 controlAmount(value) { if(value!=''){ value = value.replace(/[^\d.]/g, ''); // 清除"数字"和"."以外的字符 value = value.replace(/^\./g, ''); // 验证第一个字符是数字而不是. value = value.replace(/\.{2,}/g, '.'); // 只保留第一个. 清除多余的 value = value .replace('.', '$#$') .replace(/\./g, '') .replace('$#$', '.') // 保证.只出现一次,而不能出现两次以上 .replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 只能输入两个小数 // value = (+value).toFixed(2); // 只能输入两个小数 // value=parseFloat(value) if (value.indexOf('.') < 0 && value != '') { // 判断是否带小数点 value=this.format_number(value) }else{ let left = this.format_number(value.split('.')[0]), right = value.split('.')[1]; value = left + '.' + right; } // this.$set(this.innerModel, name, value); this.money=value //将正则的值返回给绑定的值 } }, // 数值三位以,隔开 format_number(n) { var b = parseInt(n).toString(); var len = b.length; if (len <= 3) { return b; } var r = len % 3; return r > 0 ? b.slice(0, r) + ',' + b .slice(r, len) .match(/\d{3}/g) .join(',') : b .slice(r, len) .match(/\d{3}/g) .join(','); },

有个小小的bug 不过不知道怎么修改了,但是也能用。。。

最新回复(0)