利用JavaScript实现京东式S键快捷搜索功能
本文介绍如何使用JavaScript模拟京东商城的快捷搜索功能。通过监听键盘keyup事件,判断按键是否为S键(keyCode 83),从而将焦点定位到搜索输入框。文章对比了keydown与keyup的区别,解释为何使用keyup可避免字母S被输入到搜索框中,并提供完整代码示例。
京东S键快捷搜索功能实现
看到这一功能时令人惊讶,京东商城网页版实现了这样一个特性:无论用户当前页面位置如何,只需按下键盘上的S键,光标即可自动定位至搜索栏并准备进行搜索。尽管该体验十分便捷,但知晓此功能的用户似乎并不多。
实现该功能的核心逻辑十分简单:在S键弹起(keyup)的瞬间,使搜索输入框获取焦点即可。
核心代码实现
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>按下S键光标定位搜索框</title>
</head>
<body>
<input type="text">
<script>
var search = document.querySelector('input');
document.addEventListener('keyup',function(e){
//可以使用console.log(e.keyCode)打印一下S键的ASCII值
if(e.keyCode === 83){
search.focus();
}
})
//在这里使用keyup而不使用keydown,
//keydown在键盘按下时触发,焦点放到搜索框,然后会触发S键,使S进入搜索框。
//而使用keyup,是在键盘返回时进行得到焦点,因此搜索框中不会出现s.
</script>
</body>
</html>
keydown与keyup事件区别
附:键盘事件keydown()与keyup()
1. 键盘按下事件:keydown() 在按键被按下的瞬间触发。
2. 键盘弹起事件:keyup() 在按键被松开时触发。
事件监听示例
<h1>keydown()与keyup()事件</h1>
<div style="margin:10px 0 20px 20px;">
<input class="keydown k1" type="text" placeholder="监听keydown输入:" />
按下显示输入的值:<em style="font-weight: 900;color: red;"></em>
</div>
<div style="margin:20px 0 0 20px;">
<input class="keyup k1" type="text" placeholder="监听keyup输入:" />
松手显示输入的值:<em style="font-weight: 900;color: red;"></em>
</div>
<script src="~/Content/jquery.2.1.4.min.js"></script>
<script>
$(".keydown").keydown(function (e) {
$("em").first().text(e.target.value);
});
$(".keyup").keyup(function (e) {
$("em:last").text(e.target.value);
});
</script>
执行上述代码块可以看出
keydown 事件触发时,文字尚未写入文本框。此时若在 keydown 事件中输出文本框内容,获取的是触发键盘事件前的旧文本;而 keyup 事件触发时,整个键盘操作已完成,获取的是包含新输入字符后的最新文本。
总结
到此这篇关于利用JavaScript模拟京东按键输入功能的文章就介绍到这了,更多相关JS模拟京东按键输入内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
JavaScript将图片转换为Base64编码的两种途径
2026-11-05 16:43:05
怎么在 Vue 或 React 项目中正确集成 animate.js
2026-11-05 10:23:38
JS注册事件:addEventListener基础语法与参数详解
2026-11-05 08:44:56
JSP和JS的区别:运行环境与服务端/客户端职责解析
2026-11-04 23:34:36
pdf.js 官方下载地址:GitHub Release 获取预编译包
2026-11-04 23:07:27
