我正在构建一个 CMS 系统,我在其中使用 jQuery 和 CKEditor 在线编辑内容。当编辑器模糊时,要求用户确认他/她想要丢弃编辑。如果选择“否”,则应取消模糊事件,并且编辑器保持焦点而不更改光标位置。因为在我看来这是不可能的,所以我尝试在模糊完成后重新调整编辑器的焦点。以下代码片段来自 blur 事件处理程序:
var $this = $(this);
if (confirm('Discard your changes?')) {
$this.html($this.data('previous'));
} else {
// Optimally prevent the blur event, but alternatively
// reintroduce focus at correct position...
$this.data('editor').focus();
}
请注意,focus
调用是在 中包含的编辑器实例上完成的$this.data('editor')
,但结果似乎与我直接在$this
.
这个解决方案的问题在于,虽然它重新引入了焦点,但光标现在位于文本的开头,这对最终用户来说非常不直观和烦人,他们认为没有任何改变。另一方面,仅仅放弃焦点不是一种选择,因为我不希望用户能够阻止重置内容然后继续进行其他更改,认为这些更改是持久的。
因此,我想要一个解决方案,我可以完全防止模糊,或者将光标重新引入它的最后一个位置。