前端实时搜索功能

article/2025/9/23 3:49:40

**

大部分页面都具备搜索功能。而作为前端,我们的目的只是将用户输入的内容返回给后台而后呈现反馈数据给用户,具体实现如下:

**
1.基本布局:

<div class="searcher"><p class="searcher-main"><i><img src="img/icon/icon-search-map.png"/></i><input class="searcher-text" placeholder="请输入档口名称"></input></p><p class="searcher-cancel">取消</p></div>

这里涉及一个问题如何将搜索图标放入input中,网上有相关资料不做赘述:

        .searcher {background: rgba(255, 255, 255, 0);position: fixed;z-index: 999;width: 100%;height: 6rem;text-align: center;font-size: 1.6rem;}.searcher-main {background: #F4F4F4;position: absolute;left: 50%;top: 1.2rem;margin-left: -45%;border-radius: 1.6rem;width: 80%;height: 3rem;line-height: 3rem;}               .searcher-text {width: 80%;text-align: center;border: none;outline: none;background: #F4F4F4;}.searcher-cancel {position: absolute;width: 10%;height: 3rem;line-height: 3rem;color: #929292;top: 1.2rem;right: 1rem;}

2.step-1:
无视水印

3.js部分
这里要安利IE9以上的oninput事件

  1. onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效。
  2. onkeydown/onkeypress/onkeyup在处理复制、粘贴、拖拽、长按键(按住键盘不放)等细节上并不完善。
  3. onpropertychange不用考虑是否失去焦点,不管js操作还是键盘鼠标手动操作,只要HTML元素属性发生改变即可立即捕获到。遗憾的是,onpropertychange为IE专属的。
    //监听input框,实时渲染$('.searcher-text').on('input', function() {initSearchList();});

JQ一般都是用这种+=html的方法,虽然累赘不过通过url或者tag标签里属性传参较容易理解。

        //渲染搜索列表function initSearchList() {var List = $('.searcher-land ul');var params = {};//搜索过滤字符var SEARCH_KEY = $('.searcher-text').val()params['action'] = 'get_search_key_list';params['market_iid'] = 1001;params['search_type'] = TYPE;params['search_key'] = replaceIllegalStr(SEARCH_KEY);epm.ajax(params, function(result) {console.log(result);console.log(TYPE)var html = '';List.html('');//有结果if(result.data.length > 0) {$.each(result.data, function(index, value) {goodName = value['goods_name'];shopName = value['shop_name'];//判断Name类型itemName = (goodName) ? goodName : shopName;html += '<li class="goods-list">' + itemName + '</li>'});$('.searcher-list').html(html);}//无结果else {html = '<div class="no-goods">暂时无法找到此选项~</div>';$('.searcher-list').html(html);}});}

注意这里有一个replaceIllegalStr()方法,类似正则,目的是过滤掉一些无用的符号以免给后端接收数据带来不必要的麻烦。

function replaceIllegalStr(str) {var reg;var illegal_list = ["/", "\\","[", "]","{", "}","<", ">","<", ">","「", "」",":", ";","、", "•","^", "'", "\"","\r", "\r\n", "\\n", "\n"];for (var i = 0; i < illegal_list.length; i++) {if (str.indexOf(illegal_list[i]) >= 0) {if (illegal_list[i] == '\\' || illegal_list[i] == '[') {reg = new RegExp('\\' + illegal_list[i], "g");} else {reg = new RegExp(illegal_list[i], "g");}str = str.replace(reg, '');}}return str.trim();
}

4.step-2:
这里写图片描述

5.缓存
这里我们将点击的数据保存在本地缓存里,供取用呈现:
注: epm是自己封装的一个方法与属性的对象

//设置缓存epm.setLocalItem = function(key, value) {if (window.localStorage) {localStorage.setItem(key, value);} else {//后备方案setCookie(key, value);}};
//提取缓存epm.getLocalItem = function(key) {if (window.localStorage) {return localStorage.getItem(key);} else {//后备方案return getCookie(key);}};
//删除缓存epm.removeLocalItem = function(key) {if (window.localStorage) {localStorage.removeItem(key);} else {//后备方案removeCookie(key);}};

这里写图片描述

6.step-3
得到点击的相应的缓存词里的value,再次发送ajax:
这里写图片描述


http://chatgpt.dhexx.cn/article/JcsIKtMa.shtml

相关文章

适合后端开发人员的html笔记

1html 锚点 <a href"#bottom">跳转到底部</a> <div class"aa"></div> <a href"#" id"bottom">跳转到顶部</a> img 图片标签 h1:一级标题块级元素其他的都是行内元素 img同时具备行内元素和块级…

【JavaScript】 一万字 JavaScript 笔记(详细讲解 + 代码演示 + 图解)

文章目录 变量 变量声明的提升数据类型Typeof运算符数据类型转换 表达式与运算符 隐式类型转换toFixed(a)方法保留a位小数关系运算符短路求值流程控制语句 数组函数DOMBOM面向对象 变量 一个变量只定义但没有赋初值&#xff0c;默认值是 undefined定义变量时必须写var&a…

前端面试 汇总整理

-----------------------------------------html css-------------------------------------------- 一.回流与重绘 回流一定引起重绘&#xff0c;重绘不一定回流 1.浏览器渲染机制 1&#xff09;浏览器采用流式布局。 2&#xff09;浏览器将html解析成DOM&#xff0c;css解析成…

JavaWeb——后端开发必备的JavaScript知识

JS学习 1.什么是JavaScript&#xff0c;有什么用&#xff1f; 答&#xff1a;JavaScript是网景公司发明的&#xff0c;运行在浏览器上的脚本语言&#xff0c;简称JS。 补充&#xff1a;网景公司现在没了&#xff0c;被美国在线收购了。 2.在HTML中嵌入JavaScript代码的三种方…

el-input中设置onkeypress事件是否匹配正则表达式显示输入内容的格式

场景 若依前后端分离版手把手教你本地搭建环境并运行项目&#xff1a; 若依前后端分离版手把手教你本地搭建环境并运行项目_BADAO_LIUMANG_QIZHI的博客-CSDN博客_若依前后端分离搭建 设置el-input的onkeypress事件限制输入内容是否匹配正则表达式。 注&#xff1a; 博客&a…

前端开发实习生面试总结

个人感觉面试官对实习生还是很友好的&#xff0c;大部分时候你答不上来都会引导你&#xff0c;最后还会点评你的不足&#xff0c;评价出来的那些问题确实是我自己的短板&#xff01;所以在整个过程中还是学到了很多&#xff01;&#xff01; 本人坐标南京&#xff0c;南京投的相…

datacenter 2

突然综合类又有新的事情了 页面能顺利打开了 但是好像值传不过去 之前不知道为什么输出了三十次 之前是判断两个不为4和200 然后else输出 现在改了之后只输入10次 但是出现通讯错误那个问题

数据中心与云数据中心

数据中心与云数据中心 数据中心&#xff08;DC&#xff0c;DataCenter&#xff09;是指在一个物理空间内实现信息的集中处理、存储、传输、管理等功能&#xff0c;它包括服务器、存储、网络等关键设备和这些关键设备运行所需要的环境因素&#xff0c;如供电、制冷、消防、监控等…

阿里云cassandra数据库datacenter查看

在使用阿里云的cassandra数据库时需要注意的是下图中的数据中心ID对应cassandra中的datacenter&#xff0c;而不是数据中心的名称&#xff01;&#xff01;&#xff01; 即SessionBuilder.withLocalDatacenter方法要使用阿里云cassandra官方文档中的数据中心ID public SelfT w…

英特尔固态硬盘测试软件,英特尔固态硬盘工具(Intel SSD Datacenter Tool)

英特尔固态硬盘数据中心工具Intel SSD Datacenter Tool是一个有用的命令行应用程序&#xff0c;特别适合管理 910 系列的英特尔SSD固态驱动器。如果用户的硬盘是英特尔的就需要下载一个这样的软件&#xff0c;软件能对硬盘进行检测和固件升级&#xff0c;有需要的可以下载使用。…

ICNP‘2019 Congestion Control for Cross-Datacenter Networks论文阅读笔记

文章目录 BackgroundGeminiDiscussion Background 现代的一些大规模在线服务会将他们的信息储存在不同地域的数据中心当中&#xff0c;并且这种分布以及变得越来越流行了。这意味着&#xff0c;有一些流会同时经过数据中心与广域网。(和Annulus中提到的是同一个问题) 实际上这…

2008服务器文件夹镜像,【玩转腾讯云】导入镜像-Windows 2008 R2 Datacenter

微软发布对 Windows Server 2008 和 2008 R2 的支持已于 2020 年 1 月 14 日结束。 这意味着定期安全更新也已终止,将不会有额外的: 免费本地安全更新 非安全更新 免费支持选项 在线技术内容更新 各云服务商也发布了相关下线 Windows 2008 系列镜像的公告 【腾讯云】关于Wind…

VMware Workstation中安装Windows Server 2022 DataCenter(数据中心)无桌面版且配置远程桌面

一、实现效果 二、安装配置操作 2.1、下载Windows Server 2022的iso镜像 原版软件 (itellyou.cn)https://next.itellyou.cn/Original/Index#

Windows 11 与 Windows Server 2019 Datacenter 下部署 适用于Linux的windows子系统

提示&#xff1a;一篇完成2个操作系统的步骤 2个版本同时发布 前言电脑版本 提示&#xff1a;Windows11一、安装前CPU需要支持虚拟化技术 二、安装打开Microsoft Store ,搜索 Ubuntu2.获取安装即可 阿里云 提示&#xff1a;Windows Server 2019 Datacenter一、安装前二、安装总…

Windows Server 2019 Datacenter x64 安装 SHARP AR-2048N 打印机驱动

设备信息及驱动准备 打印机型号&#xff1a;SHARP AR-2048N 系统版本&#xff1a;Windows Server 2019 Datacenter x64 官网驱动下载&#xff0c;标准驱动 2048/2348/2648/3148NV&#xff0c;打印驱动程序&#xff08;SPLC打印语言&#xff09;、扫描仪驱动程序 安装场景与问…

NSX-T 3.1 DataCenter学习实践 1

一&#xff0c;基础实验环境搭建 实验环境介绍 实验环境是两台Dell R620服务器&#xff0c;一台MD3220 SAS存储。由于R620只支持到vSphere 6.7&#xff0c;NSX-T最好通过物理机上运行嵌套EXSi虚拟机来实现&#xff0c;这样完全规避了硬件兼容性问题。ESXi虚拟机共享存储有两个…

Windows Server 2019 Datacenter 安装PHP 8.0

下载 下载PHP8.0&#xff0c;这里选择Non Thread Safe下载 https://download.csdn.net/download/qq_17790209/16620755 下载完成后通过FTP服务上传至服务器 这里我比较推荐直接将文件解压到Program File里面 安装 将php.ini.development文件的文件名改为php.ini 之后在该文…

windows server 2016 datacenter添加.net framework3.5失败解决方法

windows server 2016 datacenter添加.net framework3.5失败。 本次环境是使用学校网络中心的堡垒机&#xff0c;进入远程的虚拟机。估计学校在网络访问上做了很多限制&#xff0c;导致使用仪表盘添加角色和功能时候&#xff0c;总是失败。报错误 0x800f0907。 方法一&#xff1…

openLooKeng datacenter connector跨域查询实现原理浅析

前言 当公司发展到了一定的规模之后&#xff0c;一般都会有多个数据中心&#xff0c;或者多个机房&#xff0c;在大数据场景下就会涉及到数据会存放在不同的数据中心HDFS上&#xff0c;有时又需要使用多个数据中心的数据一起计算某些业务逻辑&#xff0c;我们可以称之为东数西…

最简单的Consul集群配置, 双datacenter

官方Doc and API在这儿: https://www.consul.io/docs/internals/architecture.html API操作我一般用curl, 这个附一个命令 curl -H "Content-Type: application/json" -X PUT --data {"Datacenter":"dc1","Node":"[Nodename]&qu…