前言

需求:输入开票主体:该操作框为下拉输入框,用户可选择历史充值过的开票主体,也可以重新输入新的开票主体

此处根据需求实现“开票主体历史搜索建议”功能,按照需求的下拉框 el-select 不完全符合产品设计;
    这里适合产品的是支持下拉选择历史选项的文本输入框;支持输入新的数据,或者选择之前有输入过的历史数据,新数据会放入存储历史集合,并在集合大小超出设定最大值后,按先进先出原则,清除历史记录。相对下拉组件,带输入建议的文本框组件 el-autocomplete 符合此需求。

功能实现

Vue 页面关键代码
    注意要引入组件 el-autocomplete 才能使用。

          <el-form ref="protocol_form" :model="protocolInfo"><el-form-item label="请选择支付方式:" class="labelClass" required><el-form-grid style="float: left;"><template><el-radio-group v-model="protocolInfo.payWay"><el-radio :label="0"> <img src="./img/aliPay2.png"/> </el-radio><el-radio :label="1"> <img src="./img/card.png"/> </el-radio></el-radio-group></template></el-form-grid></el-form-item><el-form-item label="请输入开票主体:" class="labelClass" required><el-form-grid style="float: left;"><el-autocompletev-model="protocolInfo.invoiceAccount":fetch-suggestions="querySearch"placeholder="请输入内容"/></el-form-grid></el-form-item><el-form-item style="float: left"><el-form-grid><template><el-checkbox v-model="protocolInfo.know"></el-checkbox>本人已知悉:付款账号的户名需与开票抬头(即合同主体)保持一致,否则会影响发票索取。</template></el-form-grid></el-form-item></el-form>

Js 文件关键代码
    Js 存储查询记录及渲染历史记录;文本框获取鼠标焦点事件,fetch-suggestions 方法返回输入建议,新的输入建议可以通过 localStorage 放入前端本地存储中,最多保留 6 条开票主体记录;支持输入新的开票主体,点击同意按钮时触发文本存储校验,新的文本会放入历史记录集合,并在超出 6 条记录时,清除第一条记录。

export default {data: function () {return {// 协议信息protocolInfo: {payWay: 0,invoiceAccount: '',know: false,}}},methods: {// 点击同意agreeProtocol: function () {this.handleSearchHistory()},// 返回输入建议的方法,仅当你的输入建议数据 resolve 时,通过调用 callback(data:[]) 来返回它querySearch (queryString, cb) {var invoiceAccountHistory = this.getInvoiceAccountHistory()var results = queryString ? invoiceAccountHistory.filter(this.createFilter(queryString)) : invoiceAccountHistorycb(results)},createFilter (queryString) {return (invoiceAccount) => {return (invoiceAccount.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0)}},// 存放查询记录handleSearchHistory () {let searchWordArray = localStorage.getItem('searchWord')searchWordArray = searchWordArray.split(',')if (searchWordArray.indexOf(this.protocolInfo.invoiceAccount) === -1) {searchWordArray.unshift(this.protocolInfo.invoiceAccount)}if (searchWordArray.length > 6) {searchWordArray.pop()}localStorage.setItem('searchWord', searchWordArray)},// 渲染历史记录getInvoiceAccountHistory () {let searchWordArray = localStorage.getItem('searchWord')searchWordArray = searchWordArray.split(',')let invoiceAccountHistory = []for (let i=0; i < searchWordArray.length; i++) {let item = {"value": searchWordArray[i],"label": searchWordArray[i]}invoiceAccountHistory.push(item)}return invoiceAccountHistory}}
}

页面效果

Power By niaonao, The End

ElementUI 组件 el-autocomplete 实现文本框历史查询建议相关推荐

  1. Access:如何接收文本框作为查询条件,并实时刷新查询

    今天,想设计一个窗体,窗体中有个文本框,然后按文本框的条件实时更新查询清单. 在上图输入时间 查询结果就实时刷新,这个不是在窗体中刷新,而是直接刷新Access默认的查询. 方法一: 代码部分: 1, ...

  2. vue--echarts 图标库、excel导出、面包屑组件、富文本框、地图、前端使用代理访问、监控生产环境or开发环境

    目录 一.echarts 图标库 1.echarts的基础 2.项目中的使用 二.execl导出 三.面包屑组件 四.富文本框 五.地图 六.vite 构建配置 七.后端未开跨域资源共享,前端使用代理 ...

  3. android 代码控件框高,Android控件_TextView(显示文本框控件)

    一.TextView控件的常用属性 1.android:id--控件的id 2.android:layout_width--设置控件的宽度 wrap_content(包裹实际文本内容) fill_pa ...

  4. 微信小程序开发文本框无法输入文字

    杀程序员祭天 在小程序开发组件中使用了文本框组件,鼠标点击无法获取焦点,输不了内容(这里移动端事实上是可以输入的,只是pc端的模拟器输入不了),wxml和js代码如下: <input place ...

  5. ElementUI富文本框组件wangEditor实现

    富文本框wangEditor 需求:用户要求使用富文本框上传图片.文章. 需求分析:wangeditor实现需求,几行代码即可创建一个编辑器. 解决过程: 安装 npm i wangeditor -- ...

  6. Python批量提取Excel文件中文本框组件里的文本

    开学第一课:拜托,一定不要这样问Python问题 中国大学MOOC"Python程序设计基础"免费学习地址 2020年秋季学期Python教材推荐与选用参考 推荐图书: <P ...

  7. 6、Java Swing JTextField:单行文本框组件

    Swing 中使用 JTextField 类实现一个单行文本框,它允许用户输入单行的文本信息. JTextField类的常用构造方法如下: JTextField()----创建一个默认的文本框. JT ...

  8. [原创]Flex文本框自动提示(AutoSuggest)、自动完成(AutoComplete)

    做一个小程序要用到Flex文本框自动提示的功能,因为时间不是很紧,所以决定自己动手做这个小组件,花了一个晚上的时间终于完成了.贴出来与大家分享一下. 虽然网上有不少这样的组件,但自己动手做可以锻炼下思 ...

  9. input的属性AutoComplete——关闭浏览器文本框自动提示

    1. 有时候我们并不需要AutoComplete,例如需要用户自己再次输入而非自动完成.只要将所在表单元素的autocomplete属性设置为off即可. <form> 请双击文本框 &l ...

最新文章

  1. php多表存储,php – MySql在一个单元格中存储另一个表的多个引用并选择它?
  2. Flutter开发之MVC设计模式:新建文件与导入文件(八)
  3. Android应用程序组件Content Provider简要介绍和学习计划
  4. 虎牙直播在AI实时剪辑技术上的创新实践
  5. spring boot修改内置容器tomcat的服务端口
  6. Eclipse安装Perl插件
  7. 临界区设计太大或太小有何缺点_空压机100课之016:离心式压缩机的结构、原理及优缺点...
  8. 基于python的在线考试系统-Python程序设计考试系统的开发与应用.pdf
  9. Django--CRM-客户列表展示, 分页
  10. 一个不用背单词的高效英文学习法
  11. Docker常见错误
  12. Maven依赖编译失败报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile
  13. How to deal with interlaced video
  14. 夜光:武汉加油,中国加油
  15. 关于idea的Translation插件google翻译无法使用的问题
  16. Python数据分析高薪实战第八天 数据计算统计与分析
  17. 利用mysql的几种提权方式
  18. 关于编码器脉冲距离获取存在简单问题的处理方案
  19. webpack 打包并压缩为zip文件
  20. [2022 SP] Copy, Right? 深度学习模型版权保护的测试框架

热门文章

  1. 利用python的turtle库绘制一朵玫瑰
  2. 阿里云 云盘性能评测
  3. 《赛博朋克 2077》开发者控诉公司强制 996
  4. windows命令行添加任务计划
  5. 【渝粤教育】电大中专计算机职业素养 (10)作业 题库
  6. 计算机主机一会运行一会又停止,电脑有时能开机有时不能开机是什么原因
  7. android5.1远程升级,Android 5.1中FOTA升级APN的方法
  8. Python+opencv调用摄像头实现拍照并保存
  9. Sping的AOP理解
  10. 微信小程序例子-保存图片到手机相册