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

如何在textarea按Enter键时在光标位置插入自定义{br}标签而非末尾

实现思路

要实现光标位置插入自定义{br}标签,需要先阻止回车键的默认换行行为,再读取textarea当前的光标选区位置,拆分原有内容拼接标签后,再把光标定位到插入的标签之后优化输入体验。


修改后的代码

HTML(调整事件传参,传入完整事件对象用于阻止默认行为)

<textarea class="form-control d-inline-block ml-3 my-auto" rows="1" value="" onkeydown="tagOnInput(this, event)"></textarea>

CSS(无需修改,保留原有逻辑即可)

textarea[rows="1"] {
    overflow: auto;
    white-space: nowrap;
}

JavaScript

function tagOnInput(textField, e){
  if (e.keyCode === 13) {
      // 阻止回车默认生成换行符的行为
      e.preventDefault();
      // 读取当前光标选区的起始、结束位置
      const start = textField.selectionStart;
      const end = textField.selectionEnd;
      const val = textField.value;
      // 按光标位置拆分原有内容,中间插入{br}
      textField.value = val.slice(0, start) + '{br}' + val.slice(end);
      // 插入完成后把光标移动到{br}的后方
      textField.selectionStart = textField.selectionEnd = start + 4;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:27:05