如何用JavaScript获取textarea最后一行内容?
解决textarea按下按键时获取最后一行内容的问题
当然可行,你可以通过以下方式实现:
首先纠正你代码里的一个小问题:event.code 的值是字符串类型,判断回车应该用 event.code === 'Enter'(或者用 event.key === 'Enter'),不是数字13。
接下来,获取最后一行的核心思路是:
- 用
textarea.value获取输入框的全部内容(这才是正确获取用户输入的方式,innerHTML是用来读取元素的HTML结构,不适合拿用户输入) - 将内容按换行符分割成数组,兼容Windows的
\r\n和类Unix的\n - 取数组的最后一项就是最后一行
回车触发时获取最后一行(keydown版)
const textarea = document.getElementById('textarea'); textarea.addEventListener("keydown", (event) => { if (event.code !== 'Enter') { return; } // 阻止默认回车换行行为(不需要的话可删除) event.preventDefault(); // 分割内容为行数组 const lines = textarea.value.split(/\r?\n/); // 获取最后一行 const lastLine = lines[lines.length - 1]; console.log('最后一行内容:', lastLine); });
回车触发时获取最后一行(keyup版,内容更新后触发)
如果需要在回车后内容已经更新的状态下获取,改用keyup事件更合适:
const textarea = document.getElementById('textarea'); textarea.addEventListener("keyup", (event) => { if (event.code !== 'Enter') { return; } const lines = textarea.value.split(/\r?\n/); const lastLine = lines[lines.length - 1]; console.log('最后一行内容:', lastLine); });
任意按键触发时获取最后一行
如果要在用户输入任意按键时都获取最后一行,去掉回车判断即可:
const textarea = document.getElementById('textarea'); textarea.addEventListener("keydown", () => { const lines = textarea.value.split(/\r?\n/); const lastLine = lines[lines.length - 1]; console.log('当前最后一行:', lastLine); });
内容的提问来源于stack exchange,提问作者Potter Edgerton
相关产品推荐
相关产品推荐

