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

输入框仅支持英文、特殊符号、全角自动转半角 vue3

需求:封装一个输入框组件
1.只能输入英文。
2.输入的小写英文自动转大写。
3.输入的全角特殊符号自动转半角特殊字符

效果图在这里插入图片描述

代码

<script setup>
import { defineEmits, defineModel, defineProps } from "vue";
import { debounce } from "lodash";/*** 1.只能输入英文* 2.输入的小写英文自动转大写:使用 JavaScript 的 toUpperCase() 方法来转换。* 3.输入的全角特殊符号自动转半角特殊字符:这个也可以通过正则和替换的方式来处理* @type {EmitFn<(string)[]>}*/
const emits = defineEmits(["input", "blur"]);
const inputStyle = defineModel("inputStyle"); // 输入框自定义样式
const inputValue = defineModel();const props = defineProps({// 输入最大长度maxLength: {type: Number,default: 10000},// 是否禁用isDisabled: {type: Boolean,default: false},// 是否显示后缀isShowAppend: {type: Boolean,default: false}
});
// 提示语
const placeholderInput = defineModel("placeholderInput", {default: "请输入"
});// 处理输入的逻辑
const handleInput = debounce(val => {let newValue = val.trim();// 1. 允许中文符号和英文符号的输入// 这里我们允许常见的符号,如:·¥……()【】、;‘,。!@#$%^&*()_+{}|:"<>?~`.,;'\-=\[\]\\\/newValue = newValue.replace(/[^a-zA-Z·¥……()【】、;‘,。!@#$%^&*()_+{}|:"<>?~`.,;'\-=\[\]\\/!]/g,"");// 2. 小写字母自动转为大写newValue = newValue.toUpperCase();// 3. 全角字符转为半角字符newValue = newValue.replace(/[\uFF01-\uFF5E]/g, match =>String.fromCharCode(match.charCodeAt(0) - 0xfee0));// 4. 手动转换全角的【】为半角的[]newValue = newValue.replace(//g, "[").replace(//g, "]");inputValue.value = newValue; // 更新输入框的值emits("input", inputValue.value); // 发出 input 事件
}, 300);// 失去焦点事件
const onBlur = () => {emits("blur", inputValue.value);
};
</script><template><div class="custom_common_input"><el-inputv-model="inputValue"clearable:disabled="isDisabled":maxlength="maxLength":input-style="inputStyle":placeholder="placeholderInput"style="width: 100%"@input="handleInput"@blur="onBlur"><template v-if="isShowAppend" #append><slot name="append" /></template></el-input></div>
</template><style scoped lang="scss">
.custom_common_input {width: 100%;
}
</style>

使用方法

const value = ref("");<BasicInputEn v-model="value" />

最终效果

在这里插入图片描述

http://www.xdnf.cn/news/1187.html

相关文章:

  • C# foreach 循环中获取索引的完整方案
  • PCIe体系结构学习入门——PCI总线概述(一)PCI 总线的基础知识
  • [预备知识]4. 概率基础
  • 关于ubuntu密码正确但是无法登录的情况
  • Android-KeyStore安全的存储系统
  • P3909 异或之积 解题报告
  • QML FontDialog:使用FontDialog实现字体选择功能
  • 【重走C++学习之路】16、AVL树
  • Java练习——day3
  • qemu如何支持vmovdqa64指令(百度AI)
  • 游戏工作室为何要更换IP进行多开?工作室使用代理IP要注意什么?
  • 35.编写一个简单的Mybatis插件
  • ​​电商系统用户需求报告(示例)
  • 随着ai技术的应用,及玩具类产品的层出不穷,开发此类产品的情感AI算法技术的底层构架,及情感AI算法的应用场景是转型的比较好的一个方向
  • HTTP状态码有哪些常见的类型?
  • 三网通电玩城平台系统结构与源码工程详解(四):子游戏集成与服务器调度机制全解
  • Spring AOP + Logback + MDC全链路日志追踪
  • 三线服务器通常适用于哪些用户?
  • GPIO(通用输入输出端口)详细介绍
  • 【T2I】TOKENCOMPOSE: Text-to-Image Diffusion with Token-level Supervision
  • 【2025最新面试Java八股】Java虚拟线程怎么回事,是协程吗?
  • 解决开启代理时无法正常使用Microsoft Store, OneDrive, Outlook等应用的问题
  • 构建“穿戴+云端”落水应急响应体系,为海上作业人员打造全天候、全场景的安全守护网
  • 三网通电玩城平台系统结构与源码工程详解(三):控制台与银商权限模块设计
  • 互联网大厂Java面试:从基础到进阶的技术点探讨
  • 108. 将有序数组转换为二叉搜索树
  • Python——入门... ...
  • 突破 RAG 检索瓶颈:Trae+MCP 构建高精度知识库检索系统实践
  • 嘻游组件解密工具实战教程:资源解包与UI替换全流程
  • 一目十行阅读法