element中el-autocomplete实现中英文搜索功能

本文介绍了一个基于Vue的客户搜索组件实现,该组件使用Element UI的autocomplete组件,支持迷你尺寸的输入下拉搜索,能根据输入内容提供匹配的客户名称建议,并在选择后触发客户输入事件。

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

<template>

<div class="input-item">

<!-- 输入下拉搜索模板 -->

<span>客户名称:</span>

<el-autocomplete

size="mini"

v-model="myDataObj.fullName"

:fetch-suggestions="querySearch"

placeholder="请输入内容"

@select="handleSelect"

@focus="customerFocus"

>

<template slot-scope="{ item }">

<div>{{ item.value=item.fullName}}</div>

</template>

</el-autocomplete>

</div>

</template>

<script>

export default {

data() {

return {

myDataObj: {}

};

},

props: ["customList"],

methods: {

// 输入建议

querySearch(queryString, cb) {

var customList = this.customList;

var results = queryString

? customList.filter(this.createFilter(queryString))

: customList;

// 调用 callback 返回建议列表的数据

cb(results);

},

createFilter(queryString) {

return restaurant => {

return (

restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) ===

0 ||

restaurant.referredToAsAbbr

.toLowerCase()

.indexOf(queryString.toLowerCase()) === 0

);

};

},

// 切换选项

handleSelect(item) {

this.myDataObj = item;

this.$emit("clientInput", this.myDataObj);

},

// 输入框失去焦点

customerFocus(e) {

this.$emit("clientInput", this.myDataObj);

}

}

};

</script>

<template> <div class=“card” style=“width: 50%;”> <div>个人中心</div> <el-form ref=“formRef” :model=“data.user” label-width=“110px” style=“padding-right: 60px; padding-top: 20px” > <el-form-item prop="username" label="账号" > <el-input v-model="data.user.username" autocomplete="off" placeholder="请输入账号"/> </el-form-item> <el-form-item label="姓名" prop="name"> <el-input v-model="data.user.name" autocomplete="off" placeholder="请输入姓名" /> </el-form-item> <el-form-item label="手机号" prop="phone"> <el-input v-model="data.user.phone" autocomplete="off" placeholder="请输入手机号" /> </el-form-item> <el-form-item label="头像" prop="avatar"> <el-upload action="http://localhost:8080/files/upload" :headers="{token:data.user.token}" :on-success="handleFileSuccess" list-type="picture" > <el-button type="primary">上传头像</el-button> </el-upload> </el-form-item> </el-form> <div style="text-align: center;"> <el-button type=“primary” style=“padding: 14px 18px;” @click=“update”>保存</el-button> </div> </div> </template> <script setup> import request from ‘@/utils/request’ import { ElMessage } from ‘element-plus’ const data=reactive({ user: JSON.parse(localStorage.getItem(‘xm-pro-user’)||‘{}’),//跟自己的文件名一致 }) const handleFileSuccess=(res)=>{ data.form.avatar=res.data } const emit=defineEmits([‘updateUser’]) const update=()=>{ let url if(data.user.role===‘ADMIN’){ url=‘/admin/update’ } if(data.user.role===‘TEACHER’){ url=‘/teacher/update’ } if(data.user.role===‘STUDENT’){ url=‘/student/update’ } request.put(url,data.user).then(res=>{ if(res.code===&#39;200&#39;){ ElMessage.success(&#39;更新成功&#39;) localStorage.setItem("xm-pro-user",JSON.stringify(data.user)) emit(&#39;updateUser&#39;) } }) } </script>为什么点击上传头像的时候有问题
03-17
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值