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

<div style="padding: 10px 10px" class="editor">
      <el-input
        resize
        type="textarea"
        :rows="4"
        clearable
        placeholder="请输入您的问题.."
        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;
}

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建一个微信小程序使用Vue架,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装好了Node.js和npm(Node.js的包管理器)。 2. 使用命令行工具进入你想要创建项目的目录。 3. 运行以下命令来安装Vue CLI(命令行界面):`npm install -g @vue/cli`。 4. 创建一个新的Vue项目,可以使用以下命令:`vue create <项目名称>`。例如,运行`vue create my-app`来创建一个名为my-app的项目。 5. 在创建项目时,你可以选择手动配置自己的项目,或者使用默认配置。如果是初学者,建议选择默认配置。 6. 创建成功后,进入项目目录:`cd <项目名称>`。 7. 安装微信小程序的Vue适配器,运行以下命令:`vue add mpvue`。 8. 安装完成后,你就可以使用Vue的语法和特性来开发微信小程序了。 9. 在src目录下创建一个新的页面或组件,可以在pages目录下创建页面,在components目录下创建组件。 10. 在微信小程序的入口文件main.js中注册页面或组件。 11. 运行微信开发者工具,打开项目所在目录。 12. 在微信开发者工具中导入项目,选择小程序项目,填入项目名称和路径。 13. 开发者工具中会自动编译和打包项目,并在预览窗口中显示小程序效果。 这样,你就成功搭建了一个使用Vue架开发的微信小程序。你可以根据需要继续开发和完善你的小程序。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值