ckeditor 并在用户键入时显示用户数据

Posted

技术标签:

【中文标题】ckeditor 并在用户键入时显示用户数据【英文标题】:ckeditor and display users data as they type 【发布时间】:2014-01-02 02:53:00 【问题描述】:

我有一个 textarea,当用户将数据输入到 textarea 时,数据会显示在表单的底部,以显示其数据的显示方式(与 *** 提供的预览显示方式非常相似)用户在输入时提出问题)。

我已将 CKEditor 4.3.1 安装到此文本区域,并且不再出现预览显示。

我以为这是因为文本区域的id已经被CKEditor的id替换了,所以我尝试将文本区域的id替换为CKEditor的id,但是这种方法不起作用。

我的想法错了吗?我已阅读 CKEditor 文档,但没有找到任何帮助。

当用户将数据输入 CKEditor 时,我应该使用什么方法来显示数据?

【问题讨论】:

您可以使用类或名称来识别文本编辑器 【参考方案1】:

这是因为 CKEditor 在 DOM 中 在您的 <textarea> 旁边运行(首先隐藏它),事实上,它不会更新您的 <textarea> 的内容,除非您请求它或破坏编辑器。这就是 CKEditor 的工作原理。

调用editor.updateElement<textarea> 与丰富的编辑器内容同步。您可以定期使用editor#change 事件到updateElement 并保持同步。

问题可能在于,您现有的代码很可能会观察到在<textarea> 中触发的键盘事件(onkeyuponkeydown)并更新页面底部的预览。您需要将这些回调重新附加到 editor#change 事件,因为 CKEditor 不会触发 <textarea> 中的任何事件(正如我所提到的,它根本不与它交互)。所以有两种方法可以解决你的问题:

    editor#change 上调用editor.updateElement 并从<textarea> 上的代码触发键盘事件(请参阅the fiddle)。

    CKEDITOR.replace( 'editor', 
        plugins: 'wysiwygarea,sourcearea,basicstyles,toolbar,undo',
        on: 
            instanceReady: function() 
                // Show textarea for dev purposes.
                this.element.show();
            ,
            change: function() 
                // Sync textarea.
                this.updateElement();    
    
                // Fire keyup on <textarea> here?
            
        
     );
    

    将现有的预览更新回调附加到editor#change

我支持 2. 因为 1. 是一种 hack。当然,这取决于你。

【讨论】:

感谢您提供如此详细的回复。这对我有帮助。 @oleq 如何用 ckeditor 替换所有 textareas 并在更改时更新所有相应的隐藏 textareas? 链接到答案中的小提琴。

以上是关于ckeditor 并在用户键入时显示用户数据的主要内容,如果未能解决你的问题,请参考以下文章

如何保存选定的 TableView 行数据并在用户返回屏幕时显示?

Telerik rad 日期选择器在用户键入未来日期时显示错误消息

如何在用户注销时隐藏侧边栏并在用户登录时显示侧边栏?

向下滚动时隐藏导航栏并在用户使用 jquery 向上滚动页面时显示它,不能正常工作

当用户点击一个键时显示一条消息

如何在导航栏下隐藏搜索栏并在用户下拉表格视图时显示它?