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

如何通过Tab键聚焦时选中多个textarea的默认文本?

简化多Textarea自动选中默认文本的实现

方案一:封装复用函数+批量选择元素

先给所有需要实现自动选中的textarea统一添加一个类(比如auto-select),然后通过封装函数批量绑定事件:

HTML 结构示例

<textarea id="textarea_1" class="auto-select">默认文本内容</textarea>
<textarea id="textarea_2" class="auto-select">默认文本内容</textarea>
<textarea id="textarea_3" class="auto-select">默认文本内容</textarea>

简化后的JS代码

// 封装通用的自动选中处理逻辑
function setupAutoSelect(textarea) {
  textarea.addEventListener('focus', function() {
    // 聚焦时选中全部文本
    this.select();
    
    // 修复Chrome中鼠标点击会取消选中的问题
    const handleMouseUp = () => {
      this.removeEventListener('mouseup', handleMouseUp);
      return false;
    };
    this.addEventListener('mouseup', handleMouseUp);
  });
}

// 批量获取目标textarea并绑定事件
document.querySelectorAll('.auto-select').forEach(setupAutoSelect);

方案二:事件委托(适合动态添加的Textarea)

如果你的textarea是通过JS动态生成的,用事件委托更高效,无需给每个元素单独绑定事件:

// 给父容器(或body)绑定事件,利用事件冒泡处理
document.body.addEventListener('focus', function(e) {
  // 仅处理带有auto-select类的textarea
  if (e.target.classList.contains('auto-select')) {
    const textarea = e.target;
    textarea.select();
    
    const handleMouseUp = () => {
      textarea.removeEventListener('mouseup', handleMouseUp);
      return false;
    };
    textarea.addEventListener('mouseup', handleMouseUp);
  }
}, true); // 捕获阶段触发,确保focus事件被正确拦截

优化说明

  • 消除重复代码:把三次重复的focus/mouseup逻辑封装成可复用函数,后续新增textarea只需添加auto-select类即可
  • 扩展性更强:新增或删除textarea时无需修改JS代码
  • 事件委托版本适配动态元素场景,减少内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:25:23