<el-input
v-model="scope.row.name"
@keyup="
(e) => {
scope.row.name = handleIntegerDecimalAll(e, 2, 20);
}
"
/>
/**
* 输入框正则校验,只能输入正整数、正小数、0
* @param event 原数据
* @param num 限制小数位数
* @param intNum 限制整数位数 默认10位
* @returns {string|*}
*/
export function handleIntegerDecimal(event, num, intNum) {
let digit = num || 2; // 小数位数,默认小数点后两位
let obj = event.target;
// 整数部分保留默认10位
intNum = intNum || 10;
let t = obj.value.charAt(0);
// 整数只取前10位
if (obj.value.indexOf('.') === -1) {
// 截取前10位数
obj.value = obj.value.replace(/[^\d]/g, '');
obj.value = obj.value.substring(0, intNum);
} else {
obj.value = obj.value
.replace('.', '$#$') // 把第一个字符'.'替换成'$#$'
.replace(/\./g, '') // 把其余的字符'.'替换为空
.replace('$#$', '.') // 把字符'$#$'替换回原来的'.'
.replace(/[^\d.]/g, '') // 只能输入数字和'.'
.replace(/^\./g, ''); // 不能以'.'开头
// 截取小数点后的位数
let [integerPart, decimalPart] = obj.value.split('.');
decimalPart = (decimalPart || '').substring(0, digit);
obj.value = `${integerPart}.${decimalPart}`;
// 截取小数点前10位数
integerPart = obj.value.split('.')[0];
decimalPart = obj.value.split('.')[1];
if (obj.value.indexOf('.') > intNum) {
integerPart = integerPart.substring(0, intNum);
}
obj.value = `${integerPart}.${decimalPart}`;
if (t === '-') {
// obj.value = '-' + obj.value;
return obj.value;
}
}
return obj.value;
}
// 输入框正则校验,只能输入正整数、0
export function handleInteger(event, intNum) {
let obj = event.target;
obj.value = obj.value.replace(/[^\d]/g, '');
// 如果传参数,则截取参数位数
if (intNum) {
obj.value = obj.value.substring(0, intNum);
}
return obj.value;
}
// 输入框正则校验,只能输入正整数
export function handlePositiveInteger(event) {
let obj = event.target;
obj.value = obj.value.replace(/^(0+)|[^\d]+/g, '');
return obj.value;
}
// 输入框正则校验,只能输入正负整数、0
export function handleIntegerAll(event) {
let obj = event.target;
let t = obj.value.charAt(0);
obj.value = obj.value
.replace('.', '$#$') //把第一个字符'.'替换成'$#$'
.replace(/\./g, '') //把其余的字符'.'替换为空
.replace('$#$', '.') //把字符'$#$'替换回原来的'.'
.replace(/[^\d]/g, '') //只能输入数字和'.'
.replace(/^\./g, '') //不能以'.'开头
.replace(/([0-9]+\.[0-9]{0})[0-9]*/, '$1'); //只保留2位小数
if (t == '-') {
obj.value = '-' + obj.value;
}
return obj.value;
}
// 输入框正则校验,只能输入正负整数、正负小数、0
export function handleIntegerDecimalAll(event, num, intNum) {
//整数部分保留默认10位
intNum = intNum || 10;
let digit = num || 2; //小数位数,默认小数点后两位
let obj = event.target;
let t = obj.value.charAt(0);
//整数只取前10位
if (obj.value.indexOf('.') === -1) {
// 不包含小数截取前10位数
obj.value = obj.value.substring(0, intNum);
console.log(intNum, obj.value);
}
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^\d.]/g, '');
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^\./g, '');
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/\.{2,}/g, '.');
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
//如果第一位是负号,则允许添加
if (t == '-') {
obj.value = '-' + obj.value;
}
let temp = obj.value.split('.');
if (temp.length > 1) {
// 截取小数点前10位数
let arr1 = obj.value.split('.')[0];
let arr2 = obj.value.split('.')[1];
arr1 = arr1.substring(0, intNum);
arr2 = arr2.substring(0, digit);
obj.value = arr1 + '.' + arr2;
}
return obj.value;
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。