我正在使用 Quill(富文本)并且需要找到一种方法来检查在页面提交表单时文本是否已更改。我对使用 Quill 很陌生,一直在查看事件 here .每次文本更改时都使用文本更改触发器(很明显),但我在页面上还有其他表单输入控件,这些控件在表单提交时被检查以查看它们是否已更改......我需要我的 RTF 框来做同样的事情。
编辑
我已经使用下面的示例成功地触发了事件。我现在的问题是,即使在页面加载时预先填充了编辑器,事件似乎也会触发。我不想承认这些初始加载,只有当文本已被用户更改时。
最佳答案
两种方式:
1) 监听 quill 变化,如果发生任何变化,则发出一个标志,告诉您的表单内容已更改(流程:如果您添加一个字符,然后删除它,即使结果内容相同,您的标志也会为真)
使用:
let changes = false
quill.on('text-change', function(delta, oldDelta, source) {
changes = true
})
2) 比较文档的两个快照以检测前端是否发生更改。您可以比较字符串(使用 quill.getText()
)这是最简单的,但是您可能会错过很多东西,我建议比较对象(使用 quill.getContents()
) 并使用 lodash 或其他深度相等对象方法检查。
使用:
const initialContents = quill.getContents()
const beforeSubmitContents = quill.getContents()
const hasChanged = _.isEqual(initialContents.ops, beforeSubmitContents.ops)
关于javascript - Quill JS - 检查表单提交上的文本是否更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50107174/