/**
* 只能输入固定位数的正负数字,可小数。
* @param {object} opt 配置对象
* @example this.$fc.numDxsCheck({
form: form,
key: 'companyName',
ws: 4,
fu: true
}
* */
export function numDxsCheck(opt) {
const allOpt = {
form: null, // 对象
key: 'money', // 键名,不叫money时需要传入新的键名
ws: '', // 几位小数,默认不限位数,传1代表1位小数
type: 'Number', // 默认数字类型的字符串,不支持首位多个0;传入String,支持以下格式。00.1;0001221。一般不会有这种使用需求。
fu: false // 是否支持-负数符号
};
for (let key in opt) {
allOpt[key] = opt[key];
}
allOpt.form[allOpt.key] = allOpt.form[allOpt.key] + '';
if (allOpt.type === 'Number') {
// 首位是0,第二位必须是.
if (allOpt.form[allOpt.key].slice(0, 1) === '0') {
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].slice(1, 2) !== '.'?'0':allOpt.form[allOpt.key];
}
// 首位是-0,第三位必须是.
if (allOpt.form[allOpt.key].slice(0, 2) === '-0') {
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].slice(2, 3) !== '.'?'-0':allOpt.form[allOpt.key];
}
}
// 先把非数字的都替换掉,除了数字和.
if (allOpt.fu) {
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].replace(/[^\d.-]/g, '');
} else {
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].replace(/[^\d.]/g, '');
}
// 必须保证第一个为数字而不是.
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].replace(/^\./g, '');
// 保证只有出现一个.而没有多个.
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].replace(/\.{2,}/g, '.');
// 保证只有出现一个-号,且在首尾
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].slice(0, 1) + allOpt.form[allOpt.key].slice(1, allOpt.form[allOpt.key].length).replace(/\-/g, '');
// 动态正则,小数位动态处理
const c = new RegExp('^(\\-)*(\\d+)\\.(\\d{0,' + allOpt.ws + '})\.*$');
// 只能输入两个小数
allOpt.form[allOpt.key] = allOpt.form[allOpt.key].replace(c, '$1$2.$3');
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。