vue如何全局控制el-input不能输入null NULL Null特殊字符

153 阅读1分钟

要在全局范围内给 el-input 组件添加一个属性,并控制 @input 事件以禁止输入 nullNULLNull 等字符,可以使用 Vue.js 的全局指令。我们将定义一个全局指令来监听输入事件,并过滤掉不允许的字符。

步骤 1: 定义全局指令

import Vue from 'vue';

Vue.directive('no-null-input', { bind(el, binding, vnode) { const inputHandler = (event) => { let value = event.target.value; const regex = /null|NULL|Null/g; if (regex.test(value)) { event.target.value = value.replace(regex, ''); vnode.componentInstance.$emit('input', event.target.value); } }; el.addEventListener('input', inputHandler); el._noNullInputHandler = inputHandler; // 保存处理器以便于解绑时使用 }, unbind(el) { el.removeEventListener('input', el._noNullInputHandler); delete el._noNullInputHandler; } });

步骤 2: 使用全局指令

在你需要使用 el-input 组件的地方,添加这个自定义指令:

解释

  • bind 函数:当指令绑定到元素上时调用。这里我们监听了 input 事件,每当输入发生时,检查输入值中是否包含 nullNULLNull 字符,如果包含,则将其替换掉,并触发 input 事件更新 v-model 的值。
  • unbind 函数:当指令解绑时调用,移除事件监听器,防止内存泄漏。

通过以上步骤,你已经在全局范围内给 el-input 添加了一个属性,能够控制 @input 事件,禁止输入 nullNULLNull 字符。这样,无论你在项目的哪个地方使用 el-input,它都会自动应用这个过滤规则。