vue-quill-editor 在光标位置插入文本

背景

在使用富文本的时候,有的需求需要点击按钮插入相应的文本内容以及突出样式,

解决方法

 在无样式的情况

(insertText也可以设置样式(如字体颜色),但是用户输入新内容也会存在颜色)


// 文本内容
const text = 'hello'

// 获取编辑器对象
let quill = this.$refs.myQuillEditor.quill;
 
// 获取编辑器光标位置
let index = quill.selection.savedRange.index;
 
// 插入文本至光标位置,
quill.insertText(index, text);

// 重新计算index
index+=text.length

// 移动光标至文本后面
quill.setSelection(index);
 

 如果文本需要设置样式

// 文本内容
const text = 'hello'

// 获取编辑器对象
let quill = this.$refs.myQuillEditor.quill;
 
// 获取编辑器光标位置
let index = quill.selection.savedRange.index;
 
// 插入文本至光标位置,可自定义行内样式,前后添加空格,防止输入文本会带上自定义样式
quill.clipboard.dangerouslyPasteHTML(index, `<span>&nbsp;</span><span>${text}</span><span>&nbsp;</span>`);

// 重新计算index
index+=text.length+2

// 移动光标至文本后面
quill.setSelection(index);
 

传送门(api文档)https://www.kancloud.cn/liuwave/quill/1434140

`vue-quill-editor` 是基于 Quill.js 的 Vue 组件封装,用于创建功能强大的富文本编辑器。如果你想要在 `vue-quill-editor` 中追加文本,可以利用其提供的 API 和方法。 以下是通过代码实现追加文本的具体步骤: ### 实现思路 1. **获取 Quill 实例** 使用 `ref` 获取组件实例,并从中提取出底层的 Quill 编辑器实例。 2. **定位光标位置插入内容** 利用 Quill 提供的 `editor.insertText(index, text)` 或者直接将新内容拼接到现有内容之后的方式完成操作。 --- #### 示例代码 ```vue <template> <div> <!--文本编辑器 --> <quill-editor ref="myQuillEditor" v-model="content"></quill-editor> <button @click="appendText">追加文本</button> </div> </template> <script> import { quillEditor } from 'vue-quill-editor'; export default { components: { quillEditor, }, data() { return { content: '', // 当前编辑的内容 }; }, methods: { appendText() { const quill = this.$refs.myQuillEditor.quill; // 获取 Quill 实例 if (quill) { const cursorPosition = quill.getSelection ? quill.getSelection().index : quill.getLength(); // 获取当前光标位置或文档结尾处索引值 quill.insertText(cursorPosition, "这是追加的新文本"); // 插入指定文本 } }, }, }; </script> <style src="quill/dist/quill.core.css"></style> <!-- 引入样式 --> ``` --- ### 核心点解析 1. **动态获取光标位置** 如果需要把文字插到用户当前正在输入的位置,可以用 `getSelection()` 来判断当前位置;如果返回为空,则默认添加到最后面。 2. **更新双向绑定数据** 虽然可以直接修改 DOM 内容,但如果希望保持 Vue 数据驱动的思想,建议通过 `v-model` 同步更改后的完整 HTML 字符串回填给变量。 3. **避免覆盖原有内容** 确保只对目标部分做新增动作而不破坏其它区域的数据结构完整性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值