当前位置: 首页 > 知识库问答 >
问题:

javascript - 做搜索框的历史记录时遇到的问题?

微生令
2024-01-23

1.做搜索框的历史记录的时候 历史记录是搜索框聚焦时且没有内容时展示
然后点击历史记录的某一条会把这个记录给input然后触发搜索 肯定也会关闭历史记录
但是点击历史记录的时候 触发了input的失焦 然后历史记录点击事件不生效了
尝试过点历史记录的时候 给300延迟关闭历史记录 感觉体验不好
也试过历史记录给透明度0 但是关闭了也能点着肯定是不用说的 所以问下大佬们有什么解决方法吗
2.还有个问题是 search组件点清除图标的时候 它是算清空输入框并且失焦的
触发了onChange 然后满足了搜索框没有内容展示 但是它会自动失焦 (失焦在前 onChange在后) 最后用了个开关 点击了清除图标 开关设置true onChange的时候开关为true仍然不给展示
感觉是很笨的方法(可能是本身实现思路就不大好) 所以虽然有效但是期待更好的方法和思路

共有1个答案

束新
2024-01-23
  1. 搜索框历史记录问题

解决点击历史记录导致input失焦的问题,可以通过阻止事件冒泡来实现。当点击历史记录时,先阻止点击事件的冒泡,然后再执行聚焦input的操作,这样可以确保点击历史记录不会触发input的失焦事件。

// 假设historyList是历史记录的数组// handleClick是处理历史记录点击的方法historyList.forEach((item, index) => {  const div = document.createElement('div');  div.textContent = item;  div.addEventListener('click', (e) => {    e.stopPropagation(); // 阻止事件冒泡    handleClick(item); // 处理点击事件  });});
  1. 清除图标问题

对于清除图标导致搜索框自动失焦的问题,可以通过在清除图标上添加一个标志位,用来判断是否是用户点击了清除图标。当用户点击清除图标时,先修改标志位,然后在失焦事件中检查该标志位,如果标志位为true,则不触发失焦操作。

// 假设clearIcon是清除图标的DOM节点// isClearIconClicked是标志位,初始为falseclearIcon.addEventListener('click', () => {  isClearIconClicked = true; // 修改标志位为true  input.value = ''; // 清空输入框});input.addEventListener('blur', () => {  if (isClearIconClicked) { // 检查是否是用户点击了清除图标    isClearIconClicked = false; // 修改标志位为false  } else {    // 如果不是用户点击了清除图标,正常处理失焦事件  }});

这样就可以解决清除图标导致搜索框自动失焦的问题。同时,通过在历史记录上添加事件监听器并阻止事件冒泡,也可以解决点击历史记录导致input失焦的问题。

 类似资料:
  • 本文向大家介绍Android本地实现搜索历史记录,包括了Android本地实现搜索历史记录的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android本地实现搜索历史记录的具体代码,供大家参考,具体内容如下 一.自定义搜索历史记录 本地实现搜索历史记录有很多种方法,下面不多说了,我们来用SQLite来实现此功能,直接上完整代码:点击下载源码 效果一: 效果二: 1.MainActi

  • 本文向大家介绍使用JS location实现搜索框历史记录功能,包括了使用JS location实现搜索框历史记录功能的使用技巧和注意事项,需要的朋友参考一下 首先,来看下效果图(样式什么的就不必吐槽了哈) html代码 css代码 js代码(这里需引入jQuery) 总结 以上所述是小编给大家介绍的使用JS location实现搜索框历史记录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言

  • 问题内容: 我想检索几年前/几个月前在Google网络历史记录中出现的旧Google搜索。我如何以编程方式检索它们? https://www.google.com/history/?output=rss仅提供最近的Google搜索,但不是全部。 还有一个问题:如何检索我的Google搜索记录?没有为我的问题提供任何答案! 问题答案: 您可以传递月,日和年作为参数来获取特定日期的历史记录。 例如,2

  • 读取播放历史信息 调用地址 http://api.bilibili.cn/history 返回 返回值字段 字段类型 字段说明 results int 返回的记录总数目 list object 返回数据 返回字段 “list” 子项 返回值字段 字段类型 字段说明 aid int 视频编号 typeid int 视频分类ID typename string 视频分类名称 title string

  • 历史记录 控制台维护 Elasticsearch 成功执行的最后500个请求列表。点击窗口右上角的时钟图标即可查看历史记录。这个图标会打开历史记录面板,您可以在其中查看历史请求。您也可以在这里选择一个请求,它将被添加到编辑器中当前光标所在的位置。 图 9. 历史记录面板

  • 3.3.1.1. 同步的文件历史记录 微力同步记录对文件的添加,修改、删除的操作记录,通过历史记录列表可查看时间时间及发生设备,如下: 事件时间,显示添加、修改、删除等操作发生的时间; 文件时间,显示该文件的最后修改时间; 操作类型,显示此次针对该文件所进行的操作的类型; 发生设备,显示进行此操作的设备名称; 目录,显示该文件所属同步目录; 清空历史记录,点击后可清除所有记录,此操作仅清除记录而已