vue去掉所有输入框两边空格,封装指令去空格,支持Vue2和Vue3,ElementUI Input去空格
为了在Vue2和Vue3中去除输入框两边的空格,并且支持ElementUI的Input组件,你可以创建一个自定义指令。以下是一个简单的例子:
// Vue2
export default {
install(Vue) {
Vue.directive('trim', {
bind(el, binding) {
el.addEventListener('input', function(e) {
if (el.tagName.toUpperCase() === 'INPUT') {
el.value = el.value.trim();
}
// 对于ElementUI的Input组件,需要通过v-model修改model值
if (binding.value && el.tagName.toUpperCase() === 'INPUT') {
binding.value = el.value.trim();
}
});
}
});
}
};
// Vue3
import { DirectiveBinding } from 'vue';
export default {
beforeMount(el: HTMLElement, binding: DirectiveBinding) {
el.addEventListener('input', () => {
if (el.tagName.toUpperCase() === 'INPUT') {
(el as HTMLInputElement).value = (el as HTMLInputElement).value.trim();
}
// 对于Vue3和ElementUI的Input组件,需要通过v-model修改model值
if (binding.value && el.tagName.toUpperCase() === 'INPUT') {
binding.value = (el as HTMLInputElement).value.trim();
}
});
},
unmounted(el: HTMLElement) {
el.removeEventListener('input');
}
};
在Vue2中,你可以这样使用这个指令:
<input v-trim="myModel" />
在Vue3中,你可以这样使用这个指令:
<input v-trim="myModel" />
请注意,对于ElementUI的Input组件,你可能需要使用v-model
来更新绑定的值,因为直接修改el.value
可能不会触发Vue的响应式系统。
评论已关闭