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 相关文章推荐
Mozilla中显示textarea中选择的文字
Sep 07 Javascript
prototype Element学习笔记(篇一)
Oct 26 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
JQuery中对Select的option项的添加、删除、取值
Aug 25 Javascript
js实现页面跳转重定向的几种方式
May 29 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
详解JavaScript中Date.UTC()方法的使用
Jun 12 Javascript
BootStrap中的表单大全
Sep 07 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
Jan 18 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
Vue 2.0双向绑定原理的实现方法
Oct 23 Javascript
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进程之间实现共享内存的方法
2014/06/13 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
php生成word并下载代码实例
2019/03/15 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
Vue.js watch监视属性知识点总结
2019/11/11 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
利用python发送和接收邮件
2016/09/27 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
2014国庆节标语口号
2014/09/19 职场文书
乐山大佛导游词
2015/02/02 职场文书
个人廉政承诺书
2015/04/28 职场文书
小学见习报告
2015/06/23 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle