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

在Uniapp中实现特殊字符弹出框并插入输入框

在开发Uniapp项目时,我们经常会遇到需要用户输入特殊字符的场景。为了提升用户体验,我们可以封装一个特殊字符弹出框,用户点击键盘图标后弹出该字符集,选择字符后自动插入到输入框中。本文将详细介绍如何实现这一功能。

1. 功能概述

  • 功能描述:在父组件中放置一个键盘图标,点击后弹出特殊字符集,用户点击字符后,字符将被插入到输入框中。

  • 技术栈:Uniapp + Vue3 + uni-popup组件。

2. 实现步骤

2.1 创建特殊字符弹出框组件

首先,我们创建一个名为SpecialCharPopup.vue的组件,用于显示特殊字符集并处理字符选择事件。

<template><uni-popup ref="popup" type="bottom" background-color="#fff" borderRadius="60rpx 60rpx 0 0"><view class="w-p-100 mt-30 pr-15 pl-15 pb-15 border-box overflow-y" :style="{height:height}"><view class="keyboard-content h-p-100"><view v-for="item in charts" :key="item.id" :class="item.type == 'up'? 'key-item-up':'key-item'"  @click="handleInput(item.value)">{{item.value}}</view></view></view></uni-popup>
</template><script setup>import {ref,reactive} from 'vue'const popup = ref(null)const props = defineProps({height: {type: String,default: '400rpx'},})const charts = [{id:1,value: '¹',type:'up'},{id:2,value: '²',type:'up'},{id:3,value: '³',type:'up'},{id:4,value: '⁴',type:'up'},{id:5,value: '⁵',type:'up'},{id:6,value: '⁶',type:'up'},{id:7,value: '⁷',type:'up'},{id:8,value: '⁸',type:'up'},{id:9,value: '⁹',type:'up'},{id:10,value: '⁰',type:'up'},{id:11,value: '⁻',type:'up'},{id:12,value: '𝑈ᵣₑₗ',type:'italic'},{id:13,value: '𝑘',type:'italic'}]const emit = defineEmits(['handleInput'])// 打开弹窗const attrbuteHandle = ref('')const open = (attrbute) => {// 操作的data属性值attrbuteHandle.value = attrbutepopup.value.open()}// 关闭弹窗const close = () => {popup.value.close()}const handleInput = (value) => {emit('handleInput',value,attrbuteHandle.value)}defineExpose({open,close})
</script><style scoped>.keyboard-content {background-color: #f5f5f5;display: grid;grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; /* 6列,每列占据相等的空间 */border:1px solid #ccc;border-radius: 10rpx;}.key-item-up {box-sizing: border-box;/* width: 70rpx; */height: 70rpx;text-align: right;padding-right: 10rpx;line-height: 40rpx;border:1px solid #dcdfe6;border-radius: 4px;margin:20rpx;}.key-item{box-sizing: border-box;/* width: 70rpx; */height: 70rpx;text-align: center;line-height: 70rpx;border:1px solid #dcdfe6;border-radius: 4px;margin:20rpx;}
</style>

2.2 在父组件中使用特殊字符弹出框

在父组件中,我们可以通过点击键盘图标来打开特殊字符弹出框,并处理字符插入逻辑。

<template><view><input v-model="data.name" placeholder="请输入内容" /><view @click="openPopup">键盘图标</view><SpecialCharPopup ref="specialCharPopup" @handleInput="handleInput" /></view>
</template><script setup>import { ref } from 'vue';import SpecialCharPopup from '@/components/SpecialCharPopup.vue';const data= ref({});const specialCharPopup = ref(null);const openPopup = () => {specialCharPopup.value.open('name');}const handleInput = (value, attrbute) => {data.value[attrbute] += value;}
</script>

2.3 样式调整

根据项目需求,可以进一步调整弹出框的样式,使其更符合整体UI设计。

3. 总结

通过封装SpecialCharPopup组件,我们实现了在Uniapp中点击键盘图标弹出特殊字符集,并将选中的字符插入到输入框中的功能。这种方式不仅提升了用户体验,还使得代码结构更加清晰,便于维护。

希望本文对你有所帮助,欢迎在评论区留言讨论!

 

 

相关文章:

在Uniapp中实现特殊字符弹出框并插入输入框

在开发Uniapp项目时&#xff0c;我们经常会遇到需要用户输入特殊字符的场景。为了提升用户体验&#xff0c;我们可以封装一个特殊字符弹出框&#xff0c;用户点击键盘图标后弹出该字符集&#xff0c;选择字符后自动插入到输入框中。本文将详细介绍如何实现这一功能。 1. 功能概…...

golang dlv调试工具

golang dlv调试工具 在goland2022.2版本 中调试go程序报错 WARNING: undefined behavior - version of Delve is too old for Go version 1.20.7 (maximum supported version 1.19) 即使你go install了新的dlv也无济于事 分析得出Goland实际使用的是 Goland安装目录下dlv 例…...

深入解析 BitBake 日志机制:任务调度、日志记录与调试方法

1. 引言&#xff1a;为什么 BitBake 的日志机制至关重要&#xff1f; BitBake 是 Yocto 项目的核心构建工具&#xff0c;用于解析配方、管理任务依赖&#xff0c;并执行编译和打包任务。在 BitBake 构建过程中&#xff0c;日志记录机制不仅用于跟踪任务执行情况&#xff0c;还…...

数据结构链表的C++实现

在C中实现链表是一种常见的练习&#xff0c;有助于理解指针和动态内存分配的概念。下面是一个简单的单向链表&#xff08;Singly Linked List&#xff09;的实现示例&#xff0c;包括基本的操作如插入、删除和遍历。 单向链表 (Singly Linked List) 实现 1. 定义节点结构 首…...

《原型链的故事:JavaScript 对象模型的秘密》

原型链&#xff08;Prototype Chain&#xff09; 是 JavaScript 中实现继承的核心机制。每个对象都有一个内部属性 [[Prototype]]&#xff08;可以通过 __proto__ 访问&#xff09;&#xff0c;指向其原型对象。每个对象都有一个原型&#xff0c; 原型本身也是一个对象&#xf…...

Linux 配置静态 IP

一、简介 在 Linux CentOS 系统中默认动态分配 IP 地址&#xff0c;每次启动虚拟机服务都是不一样的 IP&#xff0c;因此要配置静态 IP 地址避免每次都发生变化&#xff0c;下面将介绍配置静态 IP 的详细步骤。 首先先理解一下动态 IP 和静态 IP 的概念&#xff1a; 动态 IP…...

【Python 数据结构 10.二叉树】

目录 一、二叉树的基本概念 1.二叉树的定义 2.二叉树的特点 3.特殊的二叉树 Ⅰ、斜树 Ⅱ、满二叉树 Ⅲ、完全二叉树 Ⅳ、完全二叉树和满二叉树的区别 4.二叉树的性质 5.二叉树的顺序存储 Ⅰ、完全二叉树 Ⅱ、非完全二叉树 Ⅲ、稀疏二叉树 6.二叉树的链式存储 7.二叉树的遍历概念…...

SwanLab简明教程:从萌新到高手

目录 1. 什么是SwanLab&#xff1f; 1.1 核心特性 2. 安装SwanLab 3. 登录SwanLab账号&#xff08;云端版&#xff09; 4. 5分钟快速上手 更多案例 5. SwanLab功能组件 5.1 图表视图 5.2 表格视图 5.3 硬件监控 5.4 环境记录 5.5 组织协同 6. 训练框架集成 6.1 基…...

SQLiteStudio:一款免费跨平台的SQLite管理工具

SQLiteStudio 是一款专门用于管理和操作 SQLite 数据库的免费工具。它提供直观的图形化界面&#xff0c;简化了数据库的创建、编辑、查询和维护&#xff0c;适合数据库开发者和数据分析师使用。 功能特性 SQLiteStudio 提供的主要功能包括&#xff1a; 免费开源&#xff0c;可…...

【智能体Agent】ReAct智能体的实现思路和关键技术

基于ReAct&#xff08;Reasoning Acting&#xff09;框架的自主智能体 import re from typing import List, Tuplefrom langchain_community.chat_message_histories.in_memory import ChatMessageHistory from langchain_core.language_models.chat_models import BaseChatM…...

python爬虫系列课程8:js浏览器window对象属性

python爬虫系列课程8:js浏览器window对象属性 一、JavaScript的组成二、document常见属性对象三、navigator对象一、JavaScript的组成 JavaScript可以分为三个部分:ECMAScript标准、DOM、BOM。 ECMAScript标准:即JS的基本语法,JavaScript的核心,描述了语言的基本语法和数…...

Java基础系列:深入理解八大基本数据类型及避坑指南

目录 一、基本数据类型概述 八大类型速查表 二、各类型详解与常见陷阱 1. 整型家族&#xff08;byte/short/int/long&#xff09; 2. 浮点型&#xff08;float/double&#xff09; 3. 字符型&#xff08;char&#xff09; 4. 布尔型&#xff08;boolean&#xff09; 三…...

贝塞尔曲线学习

1、一阶贝塞尔曲线 一阶贝塞尔曲线其实是一条直线——给定点 P0、P1&#xff0c;线性贝塞尔曲线就是一条两点之间的直线&#xff0c;公式如下&#xff1a; 一阶曲线很好理解, 就是根据t来线性插值。 void MainWindow::mousePressEvent(QMouseEvent *e) {list.append(e->pos…...

机器学习(六)

一&#xff0c;决策树&#xff1a; 简介&#xff1a; 决策树是一种通过构建类似树状的结构&#xff08;颠倒的树&#xff09;&#xff0c;从根节点开始逐步对数据进行划分&#xff0c;最终在叶子节点做出预测结果的模型。 结构组成&#xff1a; 根节点&#xff1a;初始的数据集…...

kotlin高级用法总结

Kotlin 是一门功能强大且灵活的编程语言&#xff0c;除了基础语法外&#xff0c;它还提供了许多高级特性&#xff0c;可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法&#xff0c;涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...

OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 - 慧知开源充电桩平台

OCPP扩展机制与自定义功能开发&#xff1a;协议灵活性设计与实践 引言 OCPP作为开放协议&#xff0c;其核心价值在于平衡标准化与可扩展性。面对不同充电桩厂商的硬件差异、区域能源政策及定制化业务需求&#xff0c;OCPP通过**扩展点&#xff08;Extension Points&#xff09…...

docker目录挂载与卷映射的区别

在 Docker 中&#xff0c;目录挂载&#xff08;Bind Mount&#xff09;和卷映射&#xff08;Volume Mount&#xff09;的命令语法差异主要体现在路径格式上&#xff0c;具体表现为是否以斜杠&#xff08;/&#xff09;开头。以下是两者的核心区别及使用场景的总结&#xff1a; …...

【江协科技STM32】ADC数模转换器-学习笔记

ADC简介 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁&#xff0c;ADC是一种将连续的模拟信号转换为离散的数字信号的设备或模块12位逐次逼近型…...

【kubernetes】service

目录 1. 说明2. 原理2.1 服务注册2.2 服务发现2.3 负载均衡 3. Service的类型3.1 ClusterIP3.2 NodePort3.3 LoadBalancer3.4 ExternalName 4. 使用场景 1. 说明 1.kubernetes中的service主要用于提供网络服务&#xff0c;并实现微服务架构中的几个核心功能&#xff1a;全自动…...

嵌入式学习笔记-卡尔曼滤波,PID,MicroPython

文章目录 卡尔曼滤波卡尔曼滤波的核心思想卡尔曼滤波的数学模型1. 状态转移模型&#xff08;预测系统状态&#xff09;2. 观测模型&#xff08;预测测量值&#xff09; 卡尔曼滤波的五个关键步骤1. 预测状态2. 预测误差协方差3. 计算卡尔曼增益4. 更新状态5. 更新误差协方差 卡…...

什么是hive

Apache Hive 是一个基于 Hadoop 生态系统构建的数据仓库工具&#xff0c;主要用于处理和分析大规模的结构化数据。它允许用户通过类似 SQL 的查询语言&#xff08;HiveQL&#xff09;进行数据操作&#xff0c;而无需直接编写复杂的 MapReduce 程序。以下是 Hive 的核心特点和应…...

MAC电脑常用操作

环境&#xff1a;M3芯片 &#xff0c;macOS15.2 &#x1f680; 快捷键 &#x1f5a5;️ 窗口管理 ✅ 退出/进入全屏模式 • 浏览器等应用&#xff1a;⌘ Command Ctrl F ✅ 最小化当前窗口 • ⌘ Command M • &#x1f4a1; 隐藏窗口但保留应用在后台运行 ✅ 关闭当前标…...

leetcode 1287. 有序数组中出现次数超过25%的元素 简单

给你一个非递减的 有序 整数数组&#xff0c;已知这个数组中恰好有一个整数&#xff0c;它的出现次数超过数组元素总数的 25%。 请你找到并返回这个整数 示例&#xff1a; 输入&#xff1a;arr [1,2,2,6,6,6,6,7,10] 输出&#xff1a;6提示&#xff1a; 1 < arr.length…...

3.8【Q】cv

这个draw_line函数的逻辑和功能是什么&#xff1f;代码思路是什么&#xff1f;怎么写的&#xff1f; 这个t是什么&#xff1f;t.v[0]和t.v[1],[2]又是什么&#xff1f; void rst::rasterizer::draw(rst::pos_buf_id pos_buffer, rst::ind_buf_id ind_buffer, rst::Primitive ty…...

upload-labs文件上传

第一关 上传一个1.jpg的文件&#xff0c;在里面写好一句webshell 保留一个数据包&#xff0c;将其中截获的1.jpg改为1.php后重新发送 可以看到&#xff0c;已经成功上传 第二关 写一个webshell如图&#xff0c;为2.php 第二关在过滤tpye的属性&#xff0c;在上传2.php后使用b…...

PyTorch中Tensor对象的属性和方法

目录 一、核心属性 复数支持 转置与视图操作 ​元信息 ​梯度相关 ​二. 常用方法 ​基本操作 ​转置与视图 ​数学运算 ​深度学习相关 ​3. 使用示例 ​梯度计算 ​设备管理 ​自定义反向传播 ​4. 注意事项 ​总结 一、核心属性 1.requires_grad: _bool: 该…...

C++20 格式化库:强大的字符串格式化工具

文章目录 格式化语法常见用法1. 填充和对齐2. 数值格式化3. 进制格式化4. 自定义类型 示例代码注意事项 C20 的格式化库是一个强大的工具&#xff0c;用于处理字符串的格式化操作。它提供了类似于 Python 中 str.format() 的功能&#xff0c;但语法和用法更符合 C 的风格。以下…...

[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中

[傻瓜式教学]如何将MathType公式编辑器内嵌到WPS工具栏中 将MathType公式编辑器内嵌到WPS工具栏中 下载好所需文件 我用夸克网盘分享了「mathtype安装教程超简单易上手.zip」&#xff0c;点击链接即可保存。打开「夸克APP」 链接&#xff1a;https://pan.quark.cn/s/4726c684…...

分析TCP三次握手与四次挥手

TCP&#xff08;传输控制协议&#xff09;通过三次握手建立连接&#xff0c;四次挥手终止连接&#xff0c;确保数据传输的可靠性。 TCP的三个控制标志位&#xff1a; SYN——用于建立连接&#xff0c;同步序列号。 ACK——用于确认收到的数据。 FIN——用于终止连接。 ISN…...

【深度学习】宠物品种分类Pet Breeds Classifier

文章目录 宠物品种数据集制作宠物品种标签图像预处理Presizing 损失函数loss观察模型的性能提升模型的性能learning rate finder使用CLR算法训练选择学习率的策略重新训练 迁移学习微调fine_tunefit_one_cycle有判别力的学习率 选择epoch的数量更深的网络架构 宠物品种数据集 …...