vue 实现邮箱收件人功能!!!没想到下拉框完全可以做到

本文介绍如何在Vue中创建一个动态的邮箱输入框,利用`el-select`组件结合远程搜索实现邮箱地址的自动补全,同时支持自定义创建。通过`v-model`双向绑定,`remote-method`进行远程过滤,并展示了一个简洁易懂的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标签部分:

<el-select
            style="width: 100%" v-model="addMail.toEmail" multiple filterable allow-create default-first-option
            remote reserve-keyword :remote-method="remoteMethod" placeholder="请输入邮箱">
  <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>

data 部分:

data() {
  return {
    options: [],
    toEmail: [],
    addMail: {},
    contacts: [],
    suffix: ['@qq.com', '@163.com', '@gmail.com', '@126.com', '@yeah.net', '@vip.163.com', '@wo.cn', '@188.com', '@aliyun.com', '@vip.sina.com', '@sina.com','@sina.cn', '@sohu.com'],
  }
}

方法:

created() {
  this.getContacts()
},
methods: {
  getContacts() {
    list().then(response => {
      setTimeout(() => {
        this.loading = false;
        var listContacts = response.data.resultBody.records;
        for (let i = 0; i < listContacts.length; i++) {
          var contact = listContacts[i]
          var info = {'value':contact.email, 'label': contact.email}
          this.contacts.push(info)
        }
      })
    })
  },
  remoteMethod(query) {
    if (query != '') {
      if (query.indexOf('@') < 0) {
        this.options = []
        for (let i = 0; i < this.suffix.length; i++) {
          this.options.push({
            value: query + this.suffix[i],
            label: query + this.suffix[i]
          })
        }
      }
      var options = this.options.filter(item => {
        return item.label.toLowerCase()
          .indexOf(query.toLowerCase()) > -1;
      });
      this.options = options

      var contacts = this.contacts.filter(item => {
        return item.email.toLowerCase()
          .indexOf(query.toLowerCase()) > -1;
      });
      if (contacts.length > 0) {
        this.options.push(contacts)
      }
    } else {
      this.options = []
    }
  }
}

看一下最终的效果:

是不是很简单呢,大家就不要再去找 vue 实现邮箱收件人的插件啦,快用这个方法!

     博主扣扣:                                                                                               博主微信:

                                                         

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值