【发布时间】:2013-03-21 01:51:36
【问题描述】:
我正在构建一个 CMS 系统,我使用 jQuery 和 CKEditor 在线编辑内容。当编辑器模糊时,要求用户确认他/她想要丢弃编辑。如果选择“否”,则应取消模糊事件,并且编辑器保持焦点而不更改光标位置。因为在我看来这是不可能的,所以我尝试在模糊完成后重新调整编辑器的焦点。以下代码 sn-p 来自模糊事件处理程序:
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 上执行的结果相同。
这个解决方案的问题在于,虽然它重新引入了焦点,但光标现在定位在文本的开头,这对最终用户来说非常不直观和烦人,他们认为没有任何改变。另一方面,仅仅放弃焦点不是一种选择,因为我不希望用户能够阻止重置内容然后继续进行其他更改,认为这些更改是持久的。
因此,我想要一个解决方案,我可以完全防止模糊,或者将光标重新引入它的最后一个位置。
【问题讨论】:
标签: javascript jquery content-management-system editor ckeditor