You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

禁用Bootstrap单选标签切换器对上下方向键的keydown事件监听

解决Bootstrap单选标签切换器拦截上下方向键导致页面无法滚动的问题

问题背景

我需要让Bootstrap的单选标签切换器不再拦截上和下方向键,使得页面能像控件未获取焦点时一样正常滚动。

初始尝试及问题

我首先编写了以下代码,试图阻止控件响应上下方向键并重新触发滚动事件:

$('input[type="radio"][role="tab"]').on('keydown keyup', function (e)
{
    if (e.key == 'ArrowDown' || e.key == 'ArrowUp')
    {
        e.stopImmediatePropagation();
        e.preventDefault();

        // 此时控件已不再响应上下方向键
        $('body')[0].dispatchEvent(new KeyboardEvent(e.type, { 'key': e.key }));

        // 但页面依旧无法滚动,此代码无效果
    }
});

这段代码成功让控件不再响应上下方向键,但页面仍然无法正常滚动。

补充说明

  • 最小复现场景:使用Bootstrap 5.3的单选切换按钮组件,点击任意按钮后按下方向键,左右键功能正常,但上下键无法触发页面滚动。
  • 替代可行方案:
    我尝试了另一种实现方式,虽然和最初的需求不完全匹配,但用户体验表现更好:
$('input[type="radio"][role="tab"]').on('keydown keyup', function (e)
{
    if (e.key == 'ArrowDown' || e.key == 'ArrowUp')
    {
        e.stopImmediatePropagation();
        e.preventDefault();

        document.activeElement.blur();
    }
});

首次按下上下方向键时,当前聚焦的单选按钮会失去焦点,之后页面就能正常响应上下方向键进行滚动了。

内容的提问来源于stack exchange,提问作者Shtole

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:46:01