You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery的keyup事件中弹出CKEditor的内容?

解决CKEditor keyup事件获取内容的问题

你遇到的核心问题是:CKEditor初始化后会把原<textarea>隐藏,用户实际操作的是CKEditor生成的富文本编辑区域(通常是iframe或div),所以你绑定在原textarea上的keyup事件根本不会被触发。

要实现需求,得用CKEditor自身的事件系统监听输入,而非jQuery监听原textarea。下面是两种可行方案:

方案1:自动初始化时监听实例就绪事件

如果你保持用class="ckeditor"让CKEditor自动初始化,可以通过监听instanceReady事件拿到编辑器实例,再绑定keyup事件:

<script src="//cdn.ckeditor.com/4.9.1/standard/ckeditor.js"></script>
<script src="<?php echo base_url(); ?>resource/js/jquery.min.js"></script>
<script>
$(document).ready(function(){
    // 等待CKEditor完成实例初始化
    CKEDITOR.on('instanceReady', function(event) {
        const editor = event.editor;
        // 绑定编辑器的keyup事件
        editor.on('keyup', function() {
            // 获取编辑器的HTML内容
            const editorContent = editor.getData();
            alert(editorContent);
        });
    });
});
</script>
<textarea class="ckeditor" name="question" id="question"></textarea>

方案2:手动初始化并配置事件

这种方式更可控,直接手动初始化编辑器并在配置里绑定事件,不需要依赖class="ckeditor":

<script src="//cdn.ckeditor.com/4.9.1/standard/ckeditor.js"></script>
<script src="<?php echo base_url(); ?>resource/js/jquery.min.js"></script>
<script>
$(document).ready(function(){
    // 手动初始化CKEditor并绑定keyup事件
    CKEDITOR.replace('question', {
        on: {
            keyup: function() {
                // this指向当前编辑器实例
                alert(this.getData());
            }
        }
    });
});
</script>
<textarea name="question" id="question"></textarea>

补充说明

  • editor.getData()是CKEditor官方提供的获取内容的方法,能拿到完整的HTML格式内容,比直接操作原textarea更可靠。
  • 如果偶尔出现获取内容不是最新的情况,可以在keyup事件里加个极短延迟(比如setTimeout(() => { ... }, 50)),确保编辑器内容已更新。

内容的提问来源于stack exchange,提问作者omkara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:48:32