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

表格内输入框达到maxlength后自动聚焦下一个输入框的实现方案

如何实现表格中输入框达到最大长度后自动聚焦到下一个输入框?

你的原有代码失效的原因是$(this).next()只能获取当前元素的同级DOM节点,而表格里的输入框分散在不同的<td>、<tr>中,不属于同级关系,所以无法定位到下一个输入框。

下面提供两种可靠的实现方案,均支持跨<td>、<tr>的自动聚焦:

方案一:基于tabindex属性实现(推荐)

利用你已经给每个输入框设置的tabindex属性,通过当前输入框的tabindex值,直接定位到下一个tabindex的输入框,逻辑清晰且适配任意DOM结构:

原生JavaScript版本

document.addEventListener('DOMContentLoaded', function() {
  // 选中所有带maxlength和tabindex的输入框
  const inputs = document.querySelectorAll('input[maxlength][tabindex]');
  
  inputs.forEach(input => {
    // 监听输入事件(覆盖键盘输入、粘贴等所有输入场景)
    input.addEventListener('input', function() {
      const maxLength = parseInt(this.getAttribute('maxlength'), 10);
      // 检查输入长度是否达到最大值
      if (this.value.length === maxLength) {
        const currentTabIndex = parseInt(this.getAttribute('tabindex'), 10);
        // 查找下一个tabindex的输入框
        const nextInput = document.querySelector(`input[tabindex="${currentTabIndex + 1}"]`);
        if (nextInput) {
          nextInput.focus();
        }
      }
    });
  });
});

jQuery版本

$(document).ready(function(){
    $('input[maxlength][tabindex]').on('input', function(){
        const maxLength = parseInt($(this).attr('maxlength'), 10);
        if($(this).val().length === maxLength){
            const currentTab = parseInt($(this).attr('tabindex'), 10);
            const nextInput = $(`input[tabindex="${currentTab + 1}"]`);
            if(nextInput.length){
                nextInput.focus();
            }
        }
    });
});

方案二:遍历所有输入框序列

如果不想依赖tabindex,也可以提前收集所有目标输入框的序列,当当前输入框达到长度时,定位它在序列中的下一个元素:

原生JavaScript版本

document.addEventListener('DOMContentLoaded', function() {
  const inputs = Array.from(document.querySelectorAll('input[maxlength]'));
  
  inputs.forEach((input, index) => {
    input.addEventListener('input', function() {
      const maxLength = parseInt(this.getAttribute('maxlength'), 10);
      if (this.value.length === maxLength && index < inputs.length - 1) {
        inputs[index + 1].focus();
      }
    });
  });
});

关键注意事项

  • 推荐使用input事件而非keyup:input事件能覆盖键盘输入、鼠标粘贴、拖拽输入等所有输入场景,兼容性更全面。
  • 若使用tabindex方案,需保证tabindex值是连续的正整数,避免跳号导致无法找到下一个输入框。
  • 最后一个输入框达到最大长度时,不会触发聚焦操作,符合常规交互逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:30:51