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

HTML textarea按回车键无法换行问题及代码调试需求

解决textarea回车换行时光标跳到末尾的问题

嘿,这个问题我之前也碰到过!你原来的写法是直接把整个文本内容取出来追加换行符,这就会忽略当前光标位置,强制把换行加到内容末尾,光标自然也跟着跳到最后了。要实现和正常输入一样的回车换行效果,得针对光标所在位置来插入换行,同时调整光标位置。

试试这段代码:

$("#descre").on('keydown', function(e) {
  const code = e.keyCode || e.which;
  if (code === 13) {
    e.preventDefault();
    // 获取原生textarea元素,方便操作光标
    const textarea = this;
    // 记录当前光标开始和结束的位置(未选中文本时两者相等)
    const cursorStart = textarea.selectionStart;
    const cursorEnd = textarea.selectionEnd;
    const currentValue = textarea.value;

    // 在光标位置插入换行符,拼接成新内容
    textarea.value = currentValue.substring(0, cursorStart) + "\n" + currentValue.substring(cursorEnd);

    // 把光标移到换行后的位置,保持输入连贯性
    textarea.selectionStart = textarea.selectionEnd = cursorStart + 1;
  }
});

代码说明:

  • 首先阻止回车的默认行为(避免浏览器可能的其他处理)
  • 通过selectionStart和selectionEnd获取当前光标位置,这两个是原生textarea的API,能准确拿到光标所在的索引
  • 将文本内容拆成「光标前的内容」+「换行符」+「光标后的内容」,这样换行就会出现在光标当前位置
  • 最后把光标位置设置为原光标位置+1,让光标跳到新插入的换行后面,和正常输入体验完全一致

这样修改后,不管光标在文本的哪个位置,按下回车都会在当前位置插入换行,光标也会自动移到新行的开头,完全符合日常输入习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:36:21