如何禁用下拉/选择器元素的箭头键?

时间:2012-12-21 15:23:09

标签: javascript jquery

什么是一个好的jquery / javascript方法来防止用户使用向上和向下箭头键在下拉框中选择选项(即强制用户只使用鼠标选择菜单选项)?谢谢!

2 个答案:

答案 0 :(得分:11)

#1。不要这样做, 它充满了用户体验

但如果你是:

$('select').on('keydown', function(e){
    if(e.keyCode === 38 || e.keyCode === 40) { //up or down
        e.preventDefault();
        return false;
    }
});

答案 1 :(得分:0)

FOR LATEST FIREFOX& CHROME (IE是谁?; - )

我已经调整了一些代码来模仿根据需要禁用向上和向下箭头键。我必须为我的应用程序执行与arrowUp / pageUp和arrowDown / pageDown键相似的操作,以便允许自定义键盘导航(我为垂直菜单导航保留了arrowLeft / arrowRight键功能)。请注意,我应用了一个setTimeout,这似乎是Firefox(最新)所需要的:

$(document).on('keydown', 'select', function (e) {
var optsel = $(this).find('option:selected').val();
if ( (e.which == 38 || e.which === 40) ) {
setTimeout(function(){$('select option[value="' + optsel +'"]').prop("selected", true)}, 0);
}
});

诀窍是将选择菜单中选择的最后一个值保存为变量,然后根据Firefox的要求(至少)使用setTimeout方法调用它。