热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

使用jQuery和LocalStorage实现搜索历史记录功能

本文介绍了如何利用jQuery和浏览器的LocalStorage功能来实现用户搜索历史的记录和展示,帮助提升用户体验。

搜索图标


在网页中添加一个搜索框,允许用户输入查询内容,并通过 jQuery 实现对用户输入内容的监听,同时使用 LocalStorage 来保存用户的搜索历史。



type="text" name="val" placeholder="请输入您的问题" maxlength="25" class="input" autocomplete="off" />
type="button" value="搜索" class="search_sub" />


当用户点击“搜索”按钮或按下回车键时,将输入的内容存储到 LocalStorage 中,并在页面上显示最近的搜索记录。同时提供一个清除历史记录的功能。


$(document).ready(function() {
// 初始化搜索历史
initLocalStorage();
// 监听搜索按钮点击事件
$('.search_sub').click(function() {
var value = $('.input').val();
setHistoryItems(value);
});
// 监听历史记录项点击事件
$('.ulHis li').on('click', function() {
var text = $(this).text().trim();
setHistoryItems(text);
});
// 清除历史记录
$('#delHis').click(function() {
clearHistory();
});
});

function initLocalStorage() {
var historyItems = localStorage.getItem('historyItems');
if (historyItems !== null) {
var items = historyItems.split('|');
if (items.length > 0) {
var html = '';
for (var i = 0; i html += '
  • ' + items[i] + '
  • ';
    }
    $('.ulHis').html(html);
    }
    }
    }

    function setHistoryItems(keyword) {
    var maxNum = 5;
    keyword = keyword.trim();
    var historyItems = localStorage.getItem('historyItems') || '';
    var items = historyItems.split('|').filter(function(item) {
    return item !== keyword;
    });
    if (items.length >= maxNum) {
    items.shift();
    }
    items.unshift(keyword);
    localStorage.setItem('historyItems', items.join('|'));
    }

    function clearHistory() {
    localStorage.removeItem('historyItems');
    $('.ulHis').empty();
    }

    请注意,上述代码中的 ES6 语法可能不被所有浏览器支持,特别是较旧的移动设备浏览器(如魅族、红米、华为的一些低版本)。为了确保兼容性,建议使用 Babel 或 Traceur 进行转译。



    推荐阅读
    • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
    • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
    • 深入解析 HDFS Federation:多命名空间架构详解
      HDFS Federation 是一种扩展 HDFS 架构的方式,通过引入多个独立的 NameNode 来解决单点故障和性能瓶颈问题。本文将详细探讨 HDFS Federation 的工作原理、优势以及潜在挑战。 ... [详细]
    • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
    • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
      本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
    • CentOS7源码编译安装MySQL5.6
      2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
    • 掌握远程执行Linux脚本和命令的技巧
      本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
    • 本文将详细介绍在Windows 7环境下,检查U盘启动盘是否制作成功的多种方法,包括通过BIOS设置和使用模拟启动工具。 ... [详细]
    • 深入理解 H5C3 和 JavaScript 核心问题
      本文详细探讨了 H5C3 和 JavaScript 中的一些核心编程问题,通过实例解析和代码示例,帮助开发者更好地理解和应用这些技术。 ... [详细]
    • 利用存储过程构建年度日历表的详细指南
      本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
    • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
    • 使用Vultr云服务器和Namesilo域名搭建个人网站
      本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
    • 近期遇到电脑网络不稳定和游戏时频繁重启的问题,寻求专业建议。网络环境为ADSL调制解调器通过路由器共享给两台电脑使用,怀疑存在ARP攻击或硬件配置问题。希望获得详细的故障排查和解决方案。 ... [详细]
    • Hadoop入门与核心组件详解
      本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
    • 百度服务再次遭遇技术问题,疑似DNS解析故障
      近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
    author-avatar
    诺亚方舟菲芘袁子陽
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有