在使用element-ui时想要input输入框只能输入数字怎么办?这是就要用到js的原生keydown方法了,上代码
<template>
<section>
<el-form :model="defaultLimitForm">
<el-form-item label="只能输入数字" :label-width="formLabelWidth">
<el-input size="mini" v-model.number="num" controls-position="right" @keydown.native="inputLimit" />
</el-form-item>
</el-form>
</section>
</template>
<script>
let data = () => {
return {
num: 0
}
}
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
}
export default {
data: data,
methods: {
inputLimit: inputLimit
},
mounted: function() {
}
}
</script>
<style>
</style>