Quill文本编辑器text-change事件加载时触发的问题解决方案咨询
解决Quill text-change事件在页面自动填充时误触发的问题
我刚好碰到过类似的需求,其实Quill本身就提供了很简洁的解决方案,不用折腾隐藏字段存初始值!
你代码里的text-change事件回调其实已经拿到了source参数,这个参数就是用来区分内容修改来源的——它有三个可选值:
'user': 用户手动通过编辑器操作(输入、粘贴、格式化等)触发的修改'api': 通过Quill API(比如quill.setContents()、quill.insertText())触发的修改,页面加载自动填充就属于这种情况'silent': 静默修改(一般是Quill内部触发的变更)
所以你只需要在回调里判断只有当source为'user'时,才标记内容已更改:
let quillChanged = false; quill.on('text-change', function (delta, oldDelta, source) { // 仅对用户主动修改的内容标记为已更改 if (source === 'user') { quillChanged = true; } });
这样页面加载时通过API自动填充内容的操作(source为api)就不会触发quillChanged = true,完全符合你的需求。
如果之后你有通过API修改但需要标记为用户变更的场景,也可以针对性调整判断逻辑,这个参数的灵活性很高,比存初始值对比内容的方式高效太多了。
内容的提问来源于stack exchange,提问作者CJH
相关产品推荐
相关产品推荐

