JavaScript实现ECSHOP搜索框键盘上下键切换控制
作者:小括号时间:2026-10-29 07:24:29浏览:175
本文介绍如何在ECSHOP中利用JavaScript实现搜索框的键盘交互功能。通过监听keyup事件,识别上下键(UP/DOWN)控制建议列表的高亮切换,回车键(RETURN)触发点击,其他字符输入则通过定时器调用AJAX获取数据。核心在于createSelect函数返回next和prev方法,确保moveSelect能正确操作DOM元素,提升用户搜索体验。
JavaScript实现ECSHOP搜索框键盘上下键切换控制
在createSelect()函数内部,返回的对象包含next()和prev()两个方法。这两个方法在执行moveSelect()时,必须确保this指向正确,或者将moveSelect()函数定义在外部作用域中,以便正确访问上下文。
具体实现代码如下:
/* 键盘操作与问题推荐选择 */
var curDo = null;
var select = createSelect();
$('#keywords').keyup(function(e){
var theEvent = e || window.event;
code = theEvent.keyCode ? theEvent.keyCode : (theEvent.which ? theEvent.which : theEvent.charCode)
var KEY = {
UP: 38,
DOWN: 40,
DEL: 46,
TAB: 9,
RETURN: 13,
ESC: 27,
BACKSPACE: 8,
LEFT:37,
RIGHT:39
};
clearTimeout(curDo);//键盘弹起的时候应该取消定时ajax获取数据操作
switch(code) {
case KEY.UP:
select.next();
break;
case KEY.DOWN:
select.prev();
break;
case KEY.RETURN:
$('.suggest-hover').trigger('click');
break;
case KEY.LEFT:
break;
case KEY.RIGHT:
break;
default:
curDo = setTimeout(getSuggest(),300);
break;
}
});
/* suggest选择操作 */
function createSelect(){
var CLASSES = {
ACTIVE: "suggest-hover"
};
function moveSelect(step) {
var listItems=$('.suggest-results li');
//当前hover的步数
var active;
active = $('.'+CLASSES.ACTIVE).index();
listItems.eq(active).removeClass(CLASSES.ACTIVE);
active += step;
if (active < 0) {
active = listItems.size() - 1;
} else if (active >= listItems.size()) {
active = 0;
}
var activeItem = listItems.eq(active).addClass(CLASSES.ACTIVE);
};
return {
next:function(){
moveSelect(-1);
},
prev:function(){
moveSelect(1);
}
};
};
以上就是本文分享给大家的全部内容了,希望大家能够喜欢
作者最新文章
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
