javascript实现按回车键切换焦点

所属分类: 网络编程 / JavaScript 阅读数: 1772
收藏 0 赞 0 分享

前段时间学习了 HTML 和 CSS,对这方面产生了兴趣,也开始学习了 javascript 高级编程(第三版),这些天也一直在学,刚刚学到事件和表单脚本的内容。前几天,老师让编写一段代码:是在 javascript 表单中,用回车键和上下左右移动键使焦点从一个文本框移到上一个或下一个文本框中。应用目前为止学到的知识试着编写代码,在编写的过程中遇到了几个难点:取模计算;在函数内部用 this 和 arguments 找到触发事件;使用 addHandler() 方法为事件添加事件处理程序。在老师的帮助下解决了以上几个问题,自己觉得通过这段代码学到了很多知识点,所以整理完后写上注释,发表一下下。

复制代码 代码如下:

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <form>
        <div><input type="text" ></div>
        <div><input type="text" ></div>
        <div><input type="text" ></div>
        <div><input type="text" ></div>
        <div><input type="text" ></div>
        <div><input type="submit" ></div>
    </form>
    <script>
        function is_down(e) {
            var isDown;
            e = e || window.event;
            switch (e.keyCode) {
                case 13:  //回车键
                case 39:  //向右移动键
                case 40:  //向下移动键
                    isDown = true;
                    break;
                case 37:  //向左移动键
                case 38:  //向上移动键
                    isDown = false;
                    break;
            }
            return isDown;
        }
        function key_up(){
            //调用函数时,函数本身会生成 this 和 arguments
            //用 this 和 arguments 分别找到 field 和触发的事件
            var e=arguments[1];
            return is_down(e) === undefined ? true : handle_element(this, is_down(e));
        }
        function handle_element(field, is_down) {
            var elements = field.form.elements;
            for (var i = 0, len = elements.length-1; i < len; i++) {
                if (field == elements[i]) {
                    break;
                }
            }
            i = is_down ? (i + 1) % len : (i - 1) % len;
            //(0===i && is_down) --> 最后一个文本框获得焦点后按向下的键
            //(-1===i && !is_down) --> 第一个文本框获得焦点后按向上的键
            if((0===i && is_down)||(-1===i && !is_down)){
                return true;
            }
            elements[i].focus();
            var element_arr = ['button', 'submit', 'reset', 'select-one', 'textarea'];
            if (element_arr.join(',').indexOf(elements[i].type) > -1)
                elements[i].select();
            return false;
        }
        //取消回车默认提交表单事件
        document.onkeydown = function(e) {
            e = e || window.event;
            if(e.keyCode == 13) {
                e.preventDefault ? e.preventDefault() : (e.returnValue = false);
            }
        };
        //跨浏览器识别 addEventListener 和 attachEvent(IE)
        function addHandler(element, type, handler) {
            if (element.addEventListener)
                element.addEventListener(type, handler, false);
            else if (element.attachEvent)
                element.attachEvent("on" + type, handler);
            else
                element["on" + type] = handler;
        }
        var elements = document.forms[0].elements;
        for (var i = 0, len = elements.length; i < len; i++) {
            //为 keyup 事件添加 key_up 事件处理程序
            addHandler(elements[i], "keyup", key_up);
        }
    </script>
</body>
</html>

以上就是代码的全部内容了,个人感觉写的还算比较全面,该考虑到的地方都做了处理,希望大家能够喜欢。

更多精彩内容其他人还在看

JS组件Bootstrap Table使用方法详解

这篇文章主要为大家详细介绍了JS组件Bootstrap Table使用方法,具有一定的实用性,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

javascript禁止超链接跳转的方法

这篇文章主要介绍了javascript禁止超链接跳转的方法,结合实例分析了JavaScript事件机制与鼠标事件的响应操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

JavaScript实现的MD5算法完整实例

这篇文章主要介绍了JavaScript实现的MD5算法,以完整实例形式分析了基于JavaScript实现MD5算法的具体步骤与相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Hammer.js+轮播原理实现简洁的滑屏功能

这篇文章主要介绍了Hammer.js+轮播原理实现简洁的滑屏功能的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

基于JQuery实现图片轮播效果(焦点图)

这篇文章主要为大家详细介绍了基于JQuery实现图片轮播效果,利用Jquery制作焦点图左右轮播特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

javascript实现瀑布流加载图片原理

这篇文章主要为大家介绍了javascript实现瀑布流加载图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

JavaScript实现的SHA-1加密算法完整实例

这篇文章主要介绍了JavaScript实现的SHA-1加密算法,以完整实例形式分析了SHA-1加密算法的具体实现技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Javascript实现的SHA-256加密算法完整实例

这篇文章主要介绍了Javascript实现的SHA-256加密算法,以完整实例形式分析了JavaScript实现SHA-256加密的具体步骤与相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

原生js实现图片层叠轮播切换效果

这篇文章主要为大家详细介绍了原生js实现图片层叠轮播切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

javascript自动切换焦点控制效果完整实例

这篇文章主要介绍了javascript自动切换焦点控制效果的方法,结合完整实例形式分析了JavaScript响应键盘按键控制表单输入框的焦点切换功能,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多