当前位置: 首页 > news >正文

vue3自定义指令实现输入框值范围大小限制

// 自定义指令代码
export default (vue: any) => {
  const handler = ($event: Event) => {
    const inputEl = $event.target as HTMLInputElement;
    let maxValue = inputEl.max ? parseFloat(inputEl.max) : 0;
    let minValue = inputEl.min ? parseFloat(inputEl.min) : 0;
    let value = parseFloat(inputEl.value);
    if (isNaN(value)) {
      inputEl.value = "";
    } else if (value > maxValue) {
      inputEl.value = maxValue.toString();
    } else if (value < minValue) {
      inputEl.value = minValue.toString();
    } else {
      inputEl.value = value.toString();
    }
  };

  vue.directive("limit", {
    mounted(el, binding, vnode) {
      let child = el.children[0].children[0] as HTMLInputElement; // 获取到 Input 元素
      child.addEventListener("input", handler); // 添加监听
    },
    unmounted(el, binding, vnode) {
      let child = el.children[0].children[0] as HTMLInputElement; // 获取到 Input 元素
      child.removeEventListener("input", handler); // 移除监听
    }
  });
};

main.ts中引入

import limitPlugins from "./utils/limitPlugins";
const app = createApp(App);
app.use(limitPlugins);

组件上使用,这里用的是element-plus里面的el-input组件,在其他ui库使用,需更改自定义指令里面的代码,找到input输入框就行了

<el-input
	v-model="formData!.qualityOfService"
	v-limit
	min="0"
	max="10"
	type="number"
	placeholder="请输入服务质量"
/>

相关文章:

  • 网络安全之文件上传漏洞
  • leetcode日记(95)将有序数组转换为二叉搜索树
  • C++ primer plus 第八节 内存模型和命名空间第一部分
  • Spring Boot配置类原理、Spring Boot核心机制理解,以及实现自动装置的底层原理
  • 知乎后台管理系统:数据库系统原理实验2——逻辑模型设计
  • 《断舍离》:给生活做减法,给灵魂做加法
  • k8s面试题总结(十四)
  • 微软PIKE-RAG:多层次多粒度体系化智能化的知识库构建方案
  • 【leetcode hot 100 138】随机链表的复制
  • 如何下载一些网上只提供了预览的pdf
  • 架构学习第八周--Kubernetes博客搭建
  • 【高德地图开发】鼠标框选点标记,并获取标记信息
  • Python Web应用开发之Flask框架——高级应用(一)
  • 八、排序算法
  • Git基本概念及使用
  • 搜广推校招面经四十四
  • 嵌入式音视频通话SDK组件EasyRTC:全平台设备兼容,智能硬件里的WebRTC调用实践
  • python ---cad二次开发(环境搭建)
  • 【OpenGL】01-配置环境
  • element tree树形结构默认展开全部
  • 习近平致电祝贺默茨当选德国联邦总理
  • 台湾花莲县海域发生5.7级地震,震源深度15公里
  • 长三角铁路今日预计发送386万人次,沪宁、沪杭等方向尚有余票
  • 特朗普考虑任命副幕僚长米勒任国安顾问,曾策划驱逐移民行动
  • 甘肃公布校园食品安全专项整治案例,有食堂涉腐败变质食物
  • 五一假期首日,上海外滩客流超55万人次