美文网首页
通过vue指令过滤el-input特殊字符

通过vue指令过滤el-input特殊字符

作者: sxfshdf | 来源:发表于2023-04-26 10:40 被阅读0次

项目中使用了elementui,遇到需求需要过滤下el-input中的一些特殊字符,在项目中多出使用,所以做成指令形式方便调用。

vue指令的几个钩子函数

  • bind : 元素绑定时会调用并且只调用一次,进行初始化设置
  • inserted:元素插入
  • update: VNode更新时调用
  • componentUpdated:VNode更新之后调用
  • unbind: 与元素解绑时调用并只调用一次。

钩子函数主要参数

  • el:绑定的元素
  • binding
  • vnode :Vue 虚拟节点
  • oldVnode : 仅在 update 和 componentUpdated 钩子中可用。

基本代码实现:

在元素绑定时初始化设置事件监听,对input值进行过滤,之后再次触发input事件,更新绑定的值。
在给el-input绑定时,钩子bind中el参数:


el-binding.png

所以不能直接监听el,需要取他的child,input内容的过滤方式可以根据需求自己定义,目前是过滤一些特殊字符。

Vue.directive('filter-special-chars', {
    bind: function(el, binding, vnode) {
        const formatter = /[`~!@#_$%^&*()=|{}':;',\\[\\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?\s]/g
        let inputEl
        if (el.tagName.toLowerCase() !== 'input') {
            inputEl = el.children[0]
        } else {
            inputEl = el
        }
        // inputEl.addEventListener('blur', event => {
        //  vnode.componentInstance.$emit('input', inputEl.value.replace(formatter, ''))
        // })
        // 派发input事件
        inputEl.addEventListener('blur', event => {
            inputEl.value = inputEl.value.replace(formatter, '')
            inputEl.dispatchEvent(new Event('input'))
        })
    }
})

// 使用
 <el-input v-model="username" v-filter-special-chars placeholder="请输入用户名称" />

<input type="text" v-model="username" v-filter-special-chars placeholder="请输入用户名称" />

相关文章

  • vue常用特性应用场景

    1 过滤器 Vue.filter 定义一个全局过滤器 2 自定义指令 让表单自动获取焦点 通过Vue.direc...

  • VUE初级入门实践

    VUE概述 生命周期 指令 内置指令 自定义指令 过滤器 内置过滤器 VUE1.0版本 VUE2.0版本(无内置过...

  • 【AngularJS】过滤器

    表达式中添加过滤器 lowercase 过滤器将字符串格式化为小写: 向指令添加过滤器 过滤器可以通过一个管道字符...

  • Vue 成长之旅 | Vue基础用法一

    一、Vue 基础使用 二 、 Vue的指令与过滤器 1、指令的概念 指令: 是vue为开发者提供的模板语法 , 用...

  • Vue过滤器和vue-resource

    过滤器 之前我们学习了Vue的 vue基本指令 进阶学习,我们需要了解Vue的过滤器:Vue.js允许你自定义过滤...

  • 2021-05-17 C# 过滤非法字符

    region 过滤特殊字符 region 过滤非法字符 public static string encoding...

  • 过滤特殊字符

    /** * 过滤特殊字符 * @param string $f_str 要过滤的信息 * @return stri...

  • filters 过滤器

    {{ isZhuXiao | stateFilter }}Vue 是面向对象 面向对象有指令、生命周期、过滤器过滤...

  • 2018-10-09 vue的简单复习

    主流框架 vue angular react 1.vue简介 简化Dom操作 2.vue指令 3.vue过滤器 ...

  • vue2(二)

    目录 ◆ vue 简介◆ vue 的基本使用◆ vue 的调试工具◆ vue 的指令与过滤器◆ 品牌列表案例 一 ...

网友评论

      本文标题:通过vue指令过滤el-input特殊字符

      本文链接:https://www.haomeiwen.com/subject/xwkvjdtx.html