自定义指令之指定输入最大和最小值,并设置小数位数

// onlyNumber.js

var onlyNumber = {
inserted(el, vDir, vNode) {
// vDir.value 有指令的参数
let content;
//按键按下=>只允许输入 数字/小数点
el.addEventListener("keypress", event => {
let e = event || window.event;
let inputKey = String.fromCharCode(typeof e.charCode === 'number' ? e.charCode : e.keyCode);
let re = /\d|\./;
content = e.target.value;
//定义方法,阻止输入
function preventInput() {
if(e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
if(!re.test(inputKey) && !e.ctrlKey) {
preventInput();
} else if(content.indexOf(".") > 0 && inputKey == ".") {
//已有小数点,再次输入小数点
preventInput();
}
});
//按键弹起=>并限制最大最小
// el.addEventListener("keyup", event => {
// let e = event || window.event;
// content = parseFloat(e.target.value);
// if(!content) {
// content = 0.00;
// }
// let arg_max = "";
// let arg_min = "";
// if(vDir.value) {
// arg_max = parseFloat(vDir.value.max);
// arg_min = parseFloat(vDir.value.min);
// }
// if(arg_max && content > arg_max) {
// e.target.value = arg_max;
// content = arg_max;
// }
// if(arg_min && content < arg_min) {
// e.target.value = arg_min;
// content = arg_min;
// }
// });
//失去焦点=>保留指定位小数
el.addEventListener("focusout", event => { //此处会在 el-input 的 @change 后执行
let e = event || window.event;
content = parseFloat(e.target.value);
if(!content) {
content = 0.00;
}
let arg_max = "";
let arg_min = "";
if(vDir.value) {
arg_max = parseFloat(vDir.value.max);
arg_min = parseFloat(vDir.value.min);
}
if(arg_max && content > arg_max) {
e.target.value = arg_max;
content = arg_max;
}
if(arg_min && content < arg_min) {
e.target.value = arg_min;
content = arg_min;
}
let arg_precision = 0; //默认保留至整数
if(vDir.value.precision) {
arg_precision = parseFloat(vDir.value.precision);
}
e.target.value = content.toFixed(arg_precision);
})
}
};
export default (Vue) => {
Vue.directive('onlyNumber', onlyNumber);
};

 

然后直接在main.js中引入后use一下就可以了

import onlyNumber from '@/js/onlyNumber';

Vue.use(onlyNumber);

 

使用:

<el-input v-only-number="{max:100,min:0.01,precision:2}" v-model='value' type='number'></el-input>

转载于:https://www.cnblogs.com/jaolo/p/11156342.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值