笔记一:input限制只能输入数字

267 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 主要实现思路:监听键盘输入时间,只能输入数字和. 再加上一些判断条件,规范数字格式,代码如下:

<el-input  @keydown.native="inputLimit"   placeholder="请输入内容"></el-input>

inputLimit(e){
   let num = e.target.value || ''
    let code = e.which || e.keyCode
    let str = (e.key && e.key != 'Unidentified') ? e.key : num.substr(num.length - 1)
    // console.log('|type:' + e.type + '|code:' + code + '|str:' + str + '|value:' + num)
    //无论任何情况,皆可执行
    if(code == '8') {
        return true
    }
    //没有满足任何一种情况,中断执行
    if(!(/[\d.]/.test(str) || code == '190')) {
        e.returnValue = false
        return false
    }
    // 点,不能再第一位
    if(num.length==0&& num.indexOf('.') == -1&& code == '110'){
        e.returnValue = false
        return false
    }
    // 只能有一个点
    if( num.indexOf('.') != -1 && code == '110' ){
        e.returnValue = false
        return false
    }
    return true
}



/*let inputLimit = function(e) {
		let num = e.target.value || ''
		let code = e.which || e.keyCode
		let str = (e.key && e.key != 'Unidentified') ? e.key : num.substr(num.length - 1)
		console.log('|type:' + e.type + '|code:' + code + '|str:' + str + '|value:' + num)
		//无论任何情况,皆可执行
		if(code == '8') {
			return true
		}
		//没有满足任何一种情况,中断执行
		if(!(/[\d.]/.test(str) || code == '190')) {
			e.returnValue = false
			return false
		}
		if(num.length > 12 ||
			(num.indexOf('.') >= 0 && code == '190') ||
			((num.indexOf('.') == num.length - 3) && num.length > 3) ||
			(num.length == 0 && code == '190')) {
			e.returnValue = false
			return false
		}
		return true
 
	}*/