用方向键和回车键切换成组文本框的焦点

一组单行文本框,用上下方向键可切换输入焦点,输入完回车也可切换至下一个文本框。

定义一组文本框:

<div id="textbox">
    <div><input type="text"></div>
    <div><input type="text"></div>
    <div><input type="text"></div>
    <div><input type="text"></div>
</div>

监听 keydown 事件,如果是上方向键(38)、下方向键(40)或回车键(13)就切换输入焦点。

<script>
document.getElementById("textbox").addEventListener("keydown", function(ev) {
    var e = ev||event;
    var key = e.keyCode||e.which;
    if(key!=13 && key!=40 && key!=38) return;
    var all = this.getElementsByTagName("input");
    var element = e.target||e.srcElement;
    var i;
    for(i=0; i<all.length; i++){
        if(element===all[i]){
            break;
        }
    }
    if((key==13||key==40) && i!=all.length-1){
        all[i+1].focus();
    }else if(key==38 && i!=0){
        all[i-1].focus();
    }
}, false);
</script>

本例利用了事件冒泡原理,把监听绑定在了容器标签上。利用 keyCode(火狐为which)获取键盘码,用 target(IE为srcElement)获取发生事件的文本框,如果是下方向键或回车键且不是最后一个控件,则为下一个文本框设置焦点;如果是上方向键且不是第一个文本框,则为上一个文本框设置焦点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值