美文网首页
自定义指令表单限制

自定义指令表单限制

作者: HTAO濤 | 来源:发表于2021-01-10 08:38 被阅读0次

v-emoji

背景:开发中遇到的表单输入,往往会有对输入内容的限制,比如不能输入表情和特殊字符,只能输入数字或字母等。

我们常规方法是在每一个表单的 on-change 事件上做处理。

<template>

  <input type="text" v-model="note" @change="vaidateEmoji" />

</template>

<script>

  export default {

    methods: {

      vaidateEmoji() {

        var reg = /[^\u4E00-\u9FA5|\d|\a-zA-Z|\r\n\s,.?!,。?!…—&$=()-+/*{}[\]]|\s/g

        this.note = this.note.replace(reg, '')

      },

    },

  }

</script>

这样代码量比较大而且不好维护,所以我们需要自定义一个指令来解决这问题。

需求:根据正则表达式,设计自定义处理表单输入规则的指令,下面以禁止输入表情和特殊字符为例。

let findEle = (parent, type) => {

  return parent.tagName.toLowerCase() === type ? parent : parent.querySelector(type)

}

const trigger = (el, type) => {

  const e = document.createEvent('HTMLEvents')

  e.initEvent(type, true, true)

  el.dispatchEvent(e)

}

const emoji = {

  bind: function (el, binding, vnode) {

    // 正则规则可根据需求自定义

    var regRule = /[^\u4E00-\u9FA5|\d|\a-zA-Z|\r\n\s,.?!,。?!…—&$=()-+/*{}[\]]|\s/g

    let $inp = findEle(el, 'input')

    el.$inp = $inp

    $inp.handle = function () {

      let val = $inp.value

      $inp.value = val.replace(regRule, '')

      trigger($inp, 'input')

    }

    $inp.addEventListener('keyup', $inp.handle)

  },

  unbind: function (el) {

    el.$inp.removeEventListener('keyup', el.$inp.handle)

  },

}

export default emoji

使用:将需要校验的输入框加上 v-emoji 即可

<template>

  <input type="text" v-model="note" v-emoji />

</template>

相关文章

  • 02Vue的常用特性

    Vue的常用特性 表单操作 表单元素 表单域修饰符 自定义指令 无参数自定义指令定义的语法规则 无参数自定义指令用...

  • angular表单的使用实例

    大纲 1、模板驱动表单的创建2、响应式表单的创建3、模板驱动型表单的自定义指令4、响应式表单的自定义指令5、父组件...

  • 自定义指令表单限制

    v-emoji 背景:开发中遇到的表单输入,往往会有对输入内容的限制,比如不能输入表情和特殊字符,只能输入数字或字...

  • vue自定义指令

    ue自定义指令 自定义全局指定 自定义可以让表单元素自动获取光标的元素 使用 自定义局部指令 使用 钩子函数 对象...

  • Vue常用特性

    一:表单操作 表单修饰符: ① ② ③ 二:自定义指令 常用(bind,inserted) bind:只调用一次,...

  • 《Vue.js 实战》基础篇(下)

    本章内容:表单 与 v-model、组件、自定义指令 六、表单 与 v-model 6.1、基本用法 Vue.js...

  • Vue常用特性

    ✍目录总览:(表单操作、自定义指令、计算属性、侦听器、过滤器、生命周期) 一、表单操作 1. 基于Vue的表单操作...

  • Vue 常用特性

    常用特性概览 (1)表单操作(2)自定义指令(3)计算属性(4)侦听器(5)过滤器(6)生命周期 表单操作 基于 ...

  • Input length limitation (Vue自定义

    记录一下vue.js 自定义指令 -- 输入框字数长度限制

  • 九:vue.js基础(2)

    1.表单输入绑定 2.Vue实例_生命周期 3.过渡. 4.动画 5.过滤器 6.内置指令 7.自定义指令

网友评论

      本文标题:自定义指令表单限制

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