【Vue】实现仿微信输入@出现选择框

<div style="padding: 10px 10px" class="editor"><el-inputresizetype="textarea":rows="4"clearableplaceholder="请输入您的问题.."v-model="requestParams.prompt"@input="handleInput"@keydown.native="handleKeyDown"></el-input><div v-show="showDropdown" class="dropdown"><ul><li v-for="(option, index) in dropdownOptions" :key="index" @click="selectOption(option)" class="dropdown-options" :class="{'dropdown-options': true, 'selected': index === selectedOptionIndex}">{{ option }}</li></ul></div></div>
inputValue:"",
showDropdown: false,
dropdownOptions: ['选项1', '选项2', '选项3'],
selectedOptionIndex: 0

 

handleInput() {if (this.requestParams.prompt.includes('@')) {this.showDropdown = true;} else {this.showDropdown = false;}},
handleKeyDown(event) {if (event.key === 'ArrowUp') {this.handleArrowKeys(-1);} else if (event.key === 'ArrowDown') {this.handleArrowKeys(1);} else if (event.key === 'Enter') {if (this.showDropdown) {event.preventDefault(); // 阻止默认的回车键行为this.handleEnterKey();}}},handleArrowKeys(direction) {this.selectedOptionIndex += direction;if (this.selectedOptionIndex < 0) {this.selectedOptionIndex = this.dropdownOptions.length - 1;} else if (this.selectedOptionIndex >= this.dropdownOptions.length) {this.selectedOptionIndex = 0;}},
handleEnterKey() {const selectedOption = this.dropdownOptions[this.selectedOptionIndex];this.selectOption(selectedOption);this.showDropdown = false;},
selectOption(option) {this.requestParams.prompt += option;this.showDropdown = false;},
.editor {position: relative;
}.dropdown {width: 200px;border-radius: 10px;position: absolute;// top: 0;// left: 0;background-color: #fff;border: 1px solid #ccc;padding: 10px;
}
.selected {background-color: rgb(50, 156, 255);
}
.dropdown-options{border-radius:10px ;cursor: pointer;padding: 5px;
}
.dropdown-options:hover{background-color: #ccc;
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/600572.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试题:ConcurrentHashMap

ConcurrentHashMap 是一种线程安全的高效Map集合 底层数据结构&#xff1a; JDK1.7底层采用分段的数组链表实现 JDK1.8 采用的数据结构跟HashMap1.8的结构一样&#xff0c;数组链表/红黑二叉树。 1. JDK1.7 数据结构 提供了一个segment数组&#xff0c;在初始化Concurre…

Linux使用宝塔面板部署Discuz结合内网穿透实现公网访问本地论坛

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

柯桥外语培训之【韩语干货】如何用韩语作简单自我介绍

안녕하세요! 意思是“您好”“你好”&#xff0c;这是最常用的问候语&#xff0c;正式场合可以使用“안녕하십니까?" 제 이름은 [你的名字]이고, [你的年龄] 살입니다. 意思是“我的名字是~&#xff0c;~岁了”&#xff0c;这是比较谦虚的自我介绍方式 介绍自己的名字…

微信小程序开发学习笔记——4.8【小案例】初识wx.request获取网络请求并渲染至页面

>>跟着b站up主“咸虾米_”学习微信小程序开发中&#xff0c;把学习记录存到这方便后续查找。 课程连接&#xff1a;4.8.【小案例】初识wx.request获取网络请求并渲染至页面_哔哩哔哩_bilibili up主提供的网络请求常用接口&#xff1a; 随机猫咪&#xff0c;用来获取一些…

git操作码云(gitee)创建仓库到上传到远程仓库

想必有的小伙伴在为上传到码云远程仓库而感到烦恼吧&#xff01;本篇为大家详细讲解实现过程&#xff0c;跟着我的步伐一步一步来。 我就当大家已经注册好了码云 一、在码云上需要的操作 接下来我们需要使用到 git 了 二、git 上的操作 到了咋们的git了&#xff0c;开整 首…

创建真实项目vue2项目

1. 创建 vue create 项目名 2. 选择自定义 3. 勾选以下必备选项 4.选择使用vue2 5. 选择哈希模式&#xff08;n&#xff09;; css选择Less 6. ESLint校验 选择 7. 保存&#xff08;按照默认&#xff09; 8. 在哪里添加ESLint文件 9. 要不要把这个改成将来的预设&am…

HIDS是什么,如何保护主机系统

随着网络安全攻防对抗的日趋激烈&#xff0c;主机当前企业和组织的安全运营工作面临的挑战越来越突出&#xff0c;外网防护的同时&#xff0c;内网主机安全防护也越来越重要。 HIDS(Host-based Intrusion Detection System)&#xff0c;是基于主机型入侵检测系统的简称。作为计…

【201】Java8读取JSON树形结构并插入到MySQL数据库表中

我写了一个 maven 项目的 Demo&#xff0c;用来演示 JAVA8 如何读取 JSON 文件树形结构&#xff0c;并将这种树形结构保存到 MySQL 中。 json文件 city.json {"name": "山东省","sub": [{"name": "青岛市","sub"…

mysql的索引类型与数据存储

mysql索引与类型 什么是索引&#xff1f; 索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。我们可以简单理解为&#xff1a;快速查找排好序的一种数据结构。Mysql索引主要有两种结构&#xff1a;BTree索引和Hash索引。我们平常所说的索引&#xff0c;如…

理解 Golang 变量在内存分配中的规则

为什么有些变量在堆中分配、有些却在栈中分配&#xff1f; 我们先看来栈和堆的特点&#xff1a; 简单总结就是&#xff1a; 栈&#xff1a;函数局部变量&#xff0c;小数据 堆&#xff1a;大的局部变量&#xff0c;函数内部产生逃逸的变量&#xff0c;动态分配的数据&#x…

【计算机考研】408算法大题怎么练?

先说结论&#xff1a;基础阶段学好各个数据结构与&#xff0c;重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段&#xff0c;并不需要过于专门地练习算法。相反&#xff0c;基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中&#xff0c;…

Vue项目打包成exe文件(electron)

1.将写好的vue项目打包 1.1运行vue ui命令 输出目标文件 如果打开index.html是空白的&#xff0c;而且控制台报错获取xxx资源失败的问题&#xff0c;你需要在vue.config.js 上加一个命令&#xff0c;如果没有你需要创建一个。 2.下载electron官方示例 git clone https://gith…