javascript - 使用 Javascript 将标签 [start] [end] 包裹在 textarea 中的选定文本周围
问题描述
我有一个文本区域,用户可以在其中输入文本。使用按钮,他们应该能够使用自定义标签 [开始] [结束] 在此文本区域中包装选定的文本。
<button onclick="addTags();">Add Tags to selected Text</button>
<textarea id="user-input" name="user-input" rows="4" cols="50"></textarea>
示例:如果 textarea 中的文本是例如“1 2 3”并且用户标记“2”并单击按钮,则 textarea 中的结果应该是“1 [start]2[end] 3”。
我试图不让一段 javascript 工作,这将为我做这件事。
我玩过“window.getSelection()”。所以问题是:我的功能的正确方法是什么?
function addTags() {
...
}
解决方案
剪切文本:选择前、选择后、选择后。然后用标签重新组装。
document.getElementById("add-tag").onclick = () => {
let txt = document.getElementById("user-input");
const before = txt.value.substring(0, txt.selectionStart);
const sel = txt.value.substring(txt.selectionStart, txt.selectionEnd);
const after = txt.value.substring(txt.selectionEnd);
txt.value = `${before}[start]${sel}[end]${after}`;
};
<button id="add-tag">Add Tags to selected Text</button>
<textarea id="user-input" name="user-input" rows="4" cols="50"></textarea>
TODO:处理未选择任何内容的情况。-
推荐阅读
- javascript - 如何在 vue 3 中从 setup 调用 prop 函数
- xcode - lldb Xcode,“p”和“e”之间的区别
- sql - 在 Oracle 中按条件排序
- flutter - Flutter - firebase_ml_vision - 不在 IOS 上构建 - textRecognizer 不起作用
- mysql - 如何从存储过程中的 SELECT 语句传递返回的 VARCHAR?
- c++ - 在忽略其他所有内容的情况下查找字符串中的字母
- laravel - Docker Laravel Websockets - 连接在收到握手响应之前关闭
- javascript - onclick 属性中的 JavaScript 函数不起作用
- laravel - Sanctum SPA 身份验证 - web.php 与 api.php
- flutter - Flutter 在标签栏的应用栏中添加图标按钮