• vue自定义指令过滤特殊字符


     1.新建inputFilter.js文件  

    const addListener = function(el,type,fn) {
       el.addEventListener(type,fn,false);    
    }
    const specialFilter = function(el) {
       addListener(el, 'keyup', () =>{
           let reg = /[^a-zA-0-9sU4E00-U9FA5]/g;
           let enLanguage = "Special characters are not allowed";
           let zhLanguage = "不允许出现特殊字符";
           let language = localStorage.language == 'ch' ? zhLanguage : enLanguage;//中英文判断
          if(reg.test(el.value)){
               if(document.getElementByClassName('el-message').length ==0){//防止提示信息同时多次出现
                   Vue.prototype.tips = Vue.prototype.$message({
                       showClose: true,
                       message: language,
                       type: 'warning'
                   });
               }
          }else{
               Vue.prototype.tips.close();
               Vue.prototype.tips = Vue.prototype.$message({
                       showClose: true,
                       message: language,
                       type: 'warning'
               });
          }
          el.value = el.value.replace(/[^a-zA-0-9sU4E00-U9FA5]/g,'');  
       });
    }
    export default {
        bind(el, binding){
            if(el.tagName.toLowerCase() !== 'input'){    
                 el = el.getElementsByTagName('input')[0];
            }
            switch(binding.arg){
                case 'special': 
                     specialFilter(el);
                     break;
                default: 
                     break;
            }
        }
    }    

    2.新建index.js

    import inputFilter from './inputFilter'
    const install = function(Vue){
        Vue.directive('inputFilter', iniputFilter);
    };
    if(window.Vue){
        window.inputFilter = inputFilter;
        Vue.use(install);
    }
    inputFilter.install  = install;
    export default inputFilter;

    3.main.js

    //main.js中引入index.js文件
    import inputFilter from './lib/filter/index'
    //注册一个全局自定义指令
    Vue.directive(inputFilter);

    4.使用

    <el-input v-model="keywords" :placeholder="$t('label.queryMirrorName')" size="small" v-input-filter:special clearable></el-input>
  • 相关阅读:
    【android】手机增加一个新的实体按键
    python自动化错误解决方法
    java.lang.IllegalArgumentException: Buffer size too small. size = 262144 needed = 2205991
    50个开发工具
    mysql 查询json串
    软考题目单选题目
    软考操作系统基础知识
    使用DM将mysql具体表同步到tidb
    python日期处理
    安装部署dm
  • 原文地址:https://www.cnblogs.com/nongfusanquan/p/13555820.html
Copyright © 2020-2023  润新知