el-input限制只能输入数字,且保留2位小数
在Vue.js中使用Element UI库的el-input
组件时,可以通过添加@input
事件监听器来限制只能输入数字,并且保留两位小数。以下是一个简单的例子:
<template>
<el-input v-model="inputValue" @input="handleInput"></el-input>
</template>
<script>
export default {
data() {
return {
inputValue: ''
};
},
methods: {
handleInput(value) {
// 使用正则表达式来限制只能输入数字和小数点
const regex = /^(\d+)?(\.\d{1,2})?$/;
// 如果输入值不符合规定的正则表达式,则将其设置为上一个合法的值
if (!regex.test(value)) {
this.inputValue = this.inputValue.replace(/[^\d.]/g, '')
.replace(/^\./g, '')
.replace(/\.{2,}/g, '.')
.replace('.', '$#$')
.replace(/\./g, '')
.replace('$#$', '.')
.substr(0, value.indexOf('.') + 3);
}
}
}
};
</script>
这段代码中,handleInput
方法会在每次输入时被触发。使用正则表达式/^(\d+)?(\.\d{1,2})?$/
来判断输入值是否符合要求:
^
表示字符串的开始(\d+)?
表示一个或多个数字,可有可无(\.\d{1,2})?
表示一个点后面跟着一个或两个数字,点本身也是可有可无的$
表示字符串的结束
如果输入值不符合这个模式,它会被一系列的替换操作重置为合法的值。这些替换操作包括:
- 移除所有非数字和小数点的字符
- 移除开头的小数点
- 移除多余的小数点
- 添加必要的小数点
最后,通过截取字符串的前value.indexOf('.') + 3
位来确保保留两位小数。如果用户输入的是整数,则只保留前两位整数。
评论已关闭