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

构建简易OPT论坛:实现退格键聚焦上一输入框功能求助

实现退格键切换输入框焦点到上一个元素

你的原代码在处理退格焦点切换时存在两个核心问题:一是依赖input事件无法精准捕获空输入框的退格操作,二是条件判断存在冗余逻辑。下面是修正后的实现方案:

const inputs = document.querySelectorAll('.input input');

inputs.forEach((input, index) => {
    // 正向输入:输入内容后跳转到下一个输入框
    input.addEventListener('input', () => {
        if (input.value.length >= 1 && index < inputs.length - 1) {
            inputs[index + 1].focus();
        }
    });

    // 退格处理:空输入框按退格时跳转到上一个输入框
    input.addEventListener('keydown', (e) => {
        // 兼容不同浏览器的退格键标识
        if ((e.key === 'Backspace' || e.keyCode === 8) && input.value === '' && index > 0) {
            inputs[index - 1].focus();
            // 阻止默认退格行为,避免触发页面后退
            e.preventDefault();
        }
    });
});

关键优化说明:

  • 用keydown捕获退格:当输入框为空时,input事件不会触发,keydown能提前捕获按键动作,确保退格逻辑稳定生效
  • 精准的触发条件:只有同时满足「按下退格键」「当前输入框为空」「不是第一个输入框」三个条件,才执行焦点回退
  • 简化逻辑:直接使用循环的index定位前后输入框,去掉冗余的dataset.index属性
  • 规避默认行为:防止空输入框按退格时触发浏览器页面后退的默认操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:59:15