vue的elmentui的input框限制只能输入正数
时间: 2023-09-02 08:09:54 浏览: 99
vue 限制input只能输入正数的操作
ElementUI的Input组件中可以使用`type`属性来控制输入框的类型,其中包括`number`类型,但是该类型可以输入负数。如果需要限制只能输入正数,可以使用自定义指令实现。
例如,创建一个名为`positive-number`的自定义指令,可以在输入框的元素上绑定该指令。这个指令可以在`bind`和`update`钩子函数中通过正则表达式限制输入框的输入:
```javascript
Vue.directive('positive-number', {
bind: function(el) {
el.handler = function(e) {
// 限制只能输入数字和小数点
let val = e.target.value.replace(/[^\d.]/g, '');
// 限制第一个字符不能为小数点
val = val.replace(/^\./g, '');
// 限制不能出现多个小数点
val = val.replace(/\.{2,}/g, '.');
// 限制只能有一个小数点
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
// 保留两位小数
val = val.replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
// 限制只能输入正数
if (val < 0) {
val = '';
}
e.target.value = val;
};
// 监听输入事件
el.addEventListener('input', el.handler);
},
unbind: function(el) {
// 移除监听事件
el.removeEventListener('input', el.handler);
}
});
```
然后在Input组件中绑定该自定义指令即可:
```html
<el-input v-positive-number></el-input>
```
这样就可以限制该Input组件只能输入正数了。
阅读全文