【问题标题】:How to get the value from the textarea如何从 textarea 中获取值
【发布时间】:2025-12-13 21:40:04
【问题描述】:

我正在做一个使用 CKEditor 的项目。我有一个包含多个属性的面板来创建工具提示。我选择 CKEditor 将内容插入到工具提示中,因为它对用户非常有用。

如果我使用普通的 textarea 插入我想要的内容,一切正常。但是我想使用 CKEditor 代替普通的文本区域。我不知道发生了什么,但工具提示没有得到我写的内容。

有人可以帮我吗?

// Normal textarea, this works
<textarea id="editor1" autocomplete="off"></textarea>

带有CKEditor的脚本:

<textarea id="editor1" name="editor1" autocomplete="off"></textarea>
<script type="text/javascript">
    CKEDITOR.replace( 'editor1' );
</script>

我已经阅读了有关插入 ckeditor.instances... 的 JavaScript 代码,但我不知道它是如何工作的。

【问题讨论】:

  • 如果你包含 ckeditor/adapters/jquery.js 作为 javascript 文件以及 ckeditor/ckeditor.js 你可以使用 jquery 来应用 ckeditor: $("#editor1").ckeditor();您必须包含 jquery 适配器文件才能使其工作。
  • 我试过这个..但仍然不添加内容

标签: javascript jquery ckeditor


【解决方案1】:

CKEditor 库注册了一个global variable(对象)CKEDITOR(指window.CKEDITOR):

console.log( CKEDITOR );
> Object {...}

当你create an instance,假设CKEDITOR.replace(),它注册在CKEDITOR.instancesobject。此对象中的键对应实例的名称。

console.log( CKEDITOR.instances.editor1 );
> Object {...}

这是您访问编辑器 API 的方式,直到您销毁它。所以如果你想从你的编辑retrieve data,基本上打电话:

console.log( CKEDITOR.instances.editor1.getData() );
> "<p>Some text</p>"

如果你想使用 jQuery 来玩 CKEditor,CKEditor API 有一个official wrapper (adapter)

此外,考虑到您希望使用 CKEditor 为某些工具提示生成 HTML,您可能希望避免由编辑器创建段落(默认行为)。您可以通过将configuration optionconfig.enterMode 设置为CKEDITOR.ENTER_BR 来做到这一点。 CKEditor 配置见the article

【讨论】:

    【解决方案2】:

    试试这个代码

    Documentation

    $('#editor1').ckeditor(); // to add ckeditor to textbox
    
    $('#editor1').val(); // fetching value from textbox
    

    别忘了添加jQuery文件

    <script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
    <script type="text/javascript" src="/ckeditor/adapters/jquery.js">
    

    【讨论】:

    • 不...什么都没发生...这就是问题所在,因为我没有收到任何错误