【问题标题】:Prevent up/down arrow keys from changing focused select's selection防止向上/向下箭头键更改焦点选择的选择
【发布时间】:2012-05-24 15:28:12
【问题描述】:

我有一个包含两个 select 元素的文档。我希望向上/向下箭头键始终只更改其中一个selects,无论焦点在哪里。即使用户刚刚点击了select#two,它仍然有焦点,我希望向上/向下键更改select#one

下面是我必须控制select#one 的代码。 是否可以让select#two 从不响应向上/向下箭头键事件?

document.onKeyDown = function(e) {
    var evtobj = e.which ? e.which : window.event.keyCode;
    if (evtobj == 38) {
        e.preventDefault(); //do not scroll
        //change the selection
        select = $('select#one');
        select[0].selectedIndex = Math.max(0, select[0].selectedIndex - 1)
        select.change(); //fire change listeners
    } 
    if (evtobj == 40) {
        //ditto for up key
    }
}

谢谢!

【问题讨论】:

  • 您愿意接受 jQuery 解决方案吗?
  • @ElliotBonneville 从$('select#one')来看,我想他已经在用了
  • 哦,糟糕,错过了。不错的收获。
  • 您是否考虑过使用带有某种样式的列表而不是选择标签?
  • @Chango 我想这会起作用,但这会进入一个大型网站,该网站有一组定义的样式元素,我可以使用。

标签: javascript jquery html


【解决方案1】:

一个半黑客的解决方案是在以下任一关键事件发生时模糊页面上的所有其他选择元素(例如,本例中的 select#two):$("select").blur()。也许是最好/唯一的解决方案...

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 2014-11-16
    相关资源
    最近更新 更多