vue通过localStorage实现输入框历史记录提示的效果

项目场景

给输入框增加历史记录的提示

效果如图

在这里插入图片描述

代码实现

 <div>
     <span style="color: red">* </span>
     <span>委托单位/Applicant</span>
     <el-form-item>
         <el-autocomplete
             v-model="applicantCompany"
             :fetch-suggestions="queryApplicantCompanySearchAsync"
             placeholder="请输入委托单位"
             style="width: 100%"
             @focus="applicantCompanyFocus()"
         ></el-autocomplete>
     </el-form-item>
 </div>
export default {
	data(){
        return {
        	applicantCompany: '',
        	applicantCompanyOftenList: [],
        }
    },
    methods: {
    	applicantCompanyFocus(){
            var r = window.localStorage.getItem('applicant_company');
            if(r != null){
                this.applicantCompanyOftenList = JSON.parse(r);
            }
        },
         queryApplicantCompanySearchAsync(queryString, cb) {
            var applicantCompanyOftenList = this.applicantCompanyOftenList;
            var results = queryString ? applicantCompanyOftenList.filter(this.createFilter(queryString)) : applicantCompanyOftenList;
            clearTimeout(this.timeout);
            this.timeout = setTimeout(() => {
                cb(results);
            }, 1000 * Math.random());
        },
        //保存所填的内容到localStorage
        handleHistoryRecord(){
            var vm = this;
            var list = JSON.parse(window.localStorage.getItem('applicant_company'));
            var newList = [];
            if(list != null){
                //去重
                newList = list.filter(function (item) {
                    return item.value != vm.applicantCompany;
                });
            }
            newList.unshift({value: vm.applicantCompany});//置于顶部
            if (newList.slice(0, 5)) {
                window.localStorage.setItem('applicant_company', JSON.stringify(newList.slice(0, 5)));
            }
        },
        createFilter(queryString) {
            return (item) => {
                return (item.value.toString().toLowerCase().includes(queryString.toString().toLowerCase()) === true);
            };
        },
    },
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值