JavaScript实现智能搜索框

news/2024/7/1 4:59:39

应用场景:

1. 搜索框在页面中占据的空间过小,希望无论浏览到什么位置,可以轻易地回到并聚焦搜索框。

2. 搜索框里面的文字大小过小,希望能够在上方开辟一块空间放大内容

解决思路:

1. 对整个页面添加键盘事件keyup类型的侦听器,然后使用e.keyCode属性来获得用户按下的键,如果是s/S,就让搜索框聚焦。

2. 对搜索框添加键盘事件keyup类型的侦听器,将搜索框的value赋给放大内容盒子(我用的是<p>标签)的innerText,如果不为空,就将盒子通过style.display:block显示出来。

2补充. 刚刚只是实现了搜索框有内容的时候将其放大,但是当其失去焦点,即使有内容也不应放大,重新获得焦点时如果有内容就放大。

可玩味之处:两个键盘事件都得是keyup而不是keydown或者keypress

效果(请看官脑补动态效果)

 代码(css写在style标签内,js写在script标签内)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>事件进阶</title><style>div p {display: none;font-size: large;background-color: #FFFDE7;}</style>
</head>
<body><div><p>123</p><input type="text"><button>搜索</button></div></body>
<script>var search = document.querySelector('input');document.addEventListener('keyup',function(e){if(e.keyCode === 83||e.keyCode === 115){console.log("keyup:"+e.keyCode);search.focus();}})var magnify = search.previousElementSibling;console.log(magnify);search.addEventListener('keyup',function(e){magnify.innerText = search.value;if(magnify.innerText!=''){magnify.style.display = 'block';}else{magnify.style.display = 'none';}})search.addEventListener('blur',function(){magnify.style.display = 'none';})search.addEventListener('focus',function(){if(search.value!=''){magnify.style.display = 'block';}})</script>
</html>


http://lihuaxi.xjx100.cn/news/240781.html

相关文章

phpstorm failed to create jvm:error code -6 解决办法 解决方法

phpStorm 软件打开运行提示 failed to create JVM的解决办法。 修改文件 D:\Program Files (x86)\JetBrains\PhpStorm 7.1.3\bin\PhpStorm.exe.vmoptions 把内存值改成标准值&#xff0c;文件全部内容如下&#xff1a; [plain] view plaincopy -server -Xms128m -Xmx512m -X…

CentOS 6.x中目录结构及用途

目录名称作用/根目录&#xff0c;一般根目录下只存放目录&#xff0c;不要存放文件/bin存放普通用户可执行的系统命令/sbin存放的是超级管理员执行的系统命令/etc系统管理和配置文件存放路径/etc/rc.d启动的配置文件和脚本存放目录/etc/passwd系统用户密码文件&#xff0c;包含…

JavaScript实时更新中国标准时间

用到Date对象和BOM中的setInterval()定时器。 效果如下&#xff08;每隔1s刷新一次&#xff09; 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&q…

RMQ算法

一.概述 RMQ&#xff08;Range Minimum/Maximum Query&#xff09;&#xff0c;即区间最值查询&#xff0c;是指这样一个问题&#xff1a;对于长度为n的数列A&#xff0c;回答若干询问RMQ&#xff08;A,i,j&#xff09;(i,j<n)&#xff0c;返回数列A中下标在i&#xff0c;j…

JavaScript实现 按钮不可过频繁使用

主要用到setInterval和clearInterval方法和一个计时变量。 效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta na…

JVM指令详解(上)

文中提及的栈是虚拟机栈中的栈帧的操作数栈&#xff0c;本地变量表是栈帧中的本地变量表&#xff0c;如下图:/*** Author: qlq* Description* Date: 22:44 2018/9/25*/ public class MathTest {public static void main(String a[]){MathTest mathTest new MathTest();System.…

a标签点击事件

οnclick"detail(this,${vo.id})" function detail(obj,id){ var lb $("#lb").val(); $(obj).attr("href","${rootUrl }app/wx/recipeOrder/getCoudetail?id"id"&lb"lb); document.location.hrefobj.href; }

JavaScript 利用location对象实现跨页面传参

需求简述&#xff1a; 两个页面login.html和homepage.html&#xff0c;在login页输入用户名&#xff0c;点击登录会跳转到主页&#xff0c;主页拿到login页输入的用户名 实现思路&#xff1a; 1. 跳转&#xff1a;修改location.html 2. 拿参&#xff1a;处理location.searc…