javascript - HTML/Javascript - 停止左/右箭头更改下拉菜单选项

标签 javascript html drop-down-menu

我正在创建一个带有输入网格的网络表单,用于在 Django 中创建对象。

似乎当焦点在下拉菜单上时,向上和向左箭头选择上一个项目,向右/向下箭头选择下一个项目。

我想使用左/右箭头在网格上向左或向右移动焦点(有点像 excel 的做法)。我可以禁用左/右箭头来更改菜单选项吗(同时保留上/下箭头的功能)?

最佳答案

更改控件的默认行为有时会让用户感到沮丧。但有时用户希望它像您的情况一样像 excel 一样工作:)

你可以这样做:

var selects = document.getElementsByTagName('select');
for (var i = 0; i < selects.length; i++){
    selects[i].addEventListener('keydown',function(e){    
        var key = e.which || e.keyCode;
        if(key == 37){
            var previousSibling = this.previousSibling;
            while(previousSibling && previousSibling.nodeType != 1) {
                previousSibling = previousSibling.previousSibling
            }
            previousSibling.focus();
            e.preventDefault();
        }else if(key === 39){
            var nextSibling = this.nextSibling;
            while(nextSibling && nextSibling.nodeType != 1) {
                nextSibling = nextSibling.nextSibling
            }
            nextSibling.focus();
            e.preventDefault();
        }
    })
}

37键=,39键是
e.preventDefault(); 阻止您按下的键的默认行为。

Fiddle

关于javascript - HTML/Javascript - 停止左/右箭头更改下拉菜单选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22321604/

相关文章:

c# - Selenium 2 WebDriver 未按预期评估更新的 DOM

javascript - 生成代码上带有工具栏的内联 CKEditor

html - <li> 元素的元数据属性

javascript - 动画下划线链接有 3 种不同的颜色

javascript - 如何遍历多个下拉列表并访问它们的选项值

html - 使用 Internet Explorer 9 时 CSS 下拉子菜单消失

javascript - 闭包对象的继承和方法的重写

javascript - for 循环中的引用数组生成悬停事件

html - 在 div 中 float 列表的问题

css - 如何让这个下拉菜单在IE8中居中?