vue 注册自定义指令,对输入框输入内容过滤(区分中英文)

注册vue全局指令

对el-input输入框进行最大长度过滤(区分中英文)

过滤空格

注册全局指令

main.js

javascript 复制代码
/**
 * 输入框最长输入限制
 * @param {*} e 文本内容
 * @param {number} maxlength 最大字符长度
 * @param {boolean} trim 是否过滤空格
 * @returns {string} 最终文本
 */
const checkLength = (e, maxlength, trim) => {
  let b = 0; // 输入的字符数
  let r = String(e);//过滤掉所有空格
  if (trim) {
    r = String(e).replace(/\s+/g, "")
  }
  const reg = /^[\u0000-\u00ff]$/; //排除汉字和中文字符
  const len = r.length
  for (let i = 0; i < len; i++) {
    let c = r.charAt(i);
    if (reg.test(c)) {
      b++;
    } else {
      b += 2;
    }
    if (b > maxlength) { // 字符长度限制
      r = r.substr(0, i);
      break;
    }
  }
  return r
};

// 自定义指令-输入文本过滤
Vue.directive('limit-input', {
  bind(el, bindings, vnode) {
    const maxlength = typeof(bindings.value)=='object'
      ?bindings.value.maxlength
      :bindings.value;
    const trim = typeof(bindings.value)=='object'
      ?bindings.value.trim
      :false;
      
    el.addEventListener('input', (e) => {
      e.target.value = checkLength(e.target.value, maxlength, trim);
    });
  }
});

使用

test.vue

html 复制代码
<template>
	<div>
    <el-input
      clearable
      v-limit-input="{
        maxlength: 100,
        trim: true,
      }"
    ></el-input>

    <el-input
      type="textarea"
      v-limit-input="{
        maxlength: 400,
        trim: false,
      }"
    ></el-input>
  </div>
</template>
相关推荐
你怎么知道我是队长1 分钟前
win11系统查看设备配置
android·java·javascript
倾国倾城的反派修仙者2 分钟前
鸿蒙开发——使用弹窗授权保存媒体库资源
开发语言·前端·华为·harmonyos
泰勒疯狂展开17 分钟前
Vue3研学-组件的生命周期
开发语言·前端·vue
Charlie_lll20 分钟前
学习Three.js–基于GeoJSON绘制2D矢量地图
前端·three.js
计算机学姐28 分钟前
基于SpringBoot的自习室座位预定系统【预约选座+日期时间段+协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·信息可视化·tomcat
雨季66631 分钟前
构建 OpenHarmony 简易 BMI 健康指数计算器:用基础数学实现健康自评
javascript·flutter·ui·自动化·dart
小二·39 分钟前
Python Web 开发进阶实战:AI 原生安全防护 —— 在 Flask + Suricata 中构建智能网络威胁狩猎平台
前端·人工智能·python
葡萄城技术团队44 分钟前
SpreadJS V19.0 新特性解密:设计器容器行列合计,让报表数据汇总更灵活
前端
晚霞的不甘1 小时前
Flutter for OpenHarmony:从零到一:构建购物APP的骨架与精美UI
前端·javascript·flutter·ui·前端框架·鸿蒙
小二·1 小时前
Python Web 开发进阶实战:AI 原生硬件接口 —— 在 Flask + MicroPython 中构建边缘智能设备控制平台
前端·人工智能·python