javascript实现ecshop搜索框键盘上下键切换控制


Posted in Javascript onMarch 18, 2015

在createSelect()函数中,返回一个对象,这个对象的两个方法next()
和prev()中的调用的moveSelect()能正确的指向到该函数,也可以把
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);

            }

        };

    };

以上就是本文分享给大家的全部内容了,希望大家能够喜欢

Javascript 相关文章推荐
jQuery MD5加密实现代码
Mar 15 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
Aug 01 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
JavaScript中日常收集常见的10种错误(推荐)
Jan 08 Javascript
jQuery轻松实现无缝轮播效果
Mar 22 jQuery
H5实现仿flash效果的实现代码
Sep 29 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
JS创建自定义对象的六种方法总结
Dec 15 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 Vue.js
javascript版2048小游戏
Mar 18 #Javascript
JavaScript判断用户是否对表单进行了修改的方法
Mar 18 #Javascript
JavaScript阻止浏览器返回按钮的方法
Mar 18 #Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 #Javascript
JavaScript控制listbox列表框的项目上下移动的方法
Mar 18 #Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
Mar 18 #Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 #Javascript
You might like
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
PHP parse_ini_file函数的应用与扩展操作示例
2019/01/07 PHP
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
JS判断元素为数字的奇异写法分享
2012/08/01 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
JS回调函数深入理解
2019/10/16 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
js实现双色球效果
2020/08/02 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
Python实现图片尺寸缩放脚本
2018/03/10 Python
详解python3中的真值测试
2018/08/13 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
KIKO比利时官网:意大利彩妆品牌
2017/07/23 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
银行批评与自我批评
2014/02/10 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
诚信承诺书
2015/01/19 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
详细介绍python类及类的用法
2021/05/31 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技