如何检查CKEditor中是否包含一些文本?

Mil*_*kov 19 javascript fckeditor ckeditor

我有一个包含几个字段的HTML表单.其中一个是由CKEditor管理的textarea.

当用户想要提交表单时,我想检查他是否在所有字段中输入了值.

我知道如何检查CKEditor控件是否包含任何内容,但它可能是"空"HTML标记,其中没有任何文本.

我该如何查看文字?

服务器端我使用的是像PHP的trim(strip_tags($ content))之类的东西,所以我想在JavaScript中使用相同的东西.

使用jQuery的解决方案也是可用的.

Sam*_*ham 30

这将有效:

$("#editorContainer iframe").contents().find("body").text();
Run Code Online (Sandbox Code Playgroud)

这将只包含文本,而不包含任何html标记.

UPDATE

它肯定适用于CKEditor演示页面.使用Firefox和Firebug,转到Firebug控制台,然后输入:

$("#demoInside iframe").contents().find("body").text();
Run Code Online (Sandbox Code Playgroud)

控制台将在编辑器中打印出文本,没有html标签.确保在特定应用程序中选择器正确.您可以像这样测试您的选择器:

$("#demoInside iframe").contents().find("body").length;
Run Code Online (Sandbox Code Playgroud)

这应该等于1.如果它是0,你的选择器是错误的.

更新2

同样,我的代码仍然正确,它仍然适用于该页面.你只需要正确的选择器.在您链接到的页面上,它是<span>带有ID的cke_editor1.该特定页面不使用jQuery,因此需要一些额外的工作来证明此示例有效.安装FireQuery,"jqueryify"页面,然后在Firebug控制台中执行此操作(注意您必须使用jQuery而不是$.这就是FireQuery的工作原理).

jQuery("#cke_editor1 iframe").contents().find("body").text();
Run Code Online (Sandbox Code Playgroud)

简而言之,请确保您有正确的选择器来访问您的iframe.是否从a <div>或a 创建CKEditor <textarea>并不重要.只要您可以选择<iframe>CKEditor注入DOM,您就可以使用它.contents().find("body").text()来获取该iframe的文本.你测试了你的jquery选择器,看看是否.length == 1

  • @Trip,可能是.html() (3认同)

a c*_*der 15

CKeditor有自己的内置函数,用于在文本编辑器中检索数据:

function CheckForm(theForm) 
{
    textbox_data = CKEDITOR.instances.mytextbox.getData();
    if (textbox_data==='')
    {
        alert('please enter a comment');
    }
}
Run Code Online (Sandbox Code Playgroud)

文档


Jam*_*sir 5

您可以使用以下代码段来检查 ckeditor 是否有一些文本。

var _contents = CKEDITOR.instances.editor1.document.getBody().getText();
if (_contents == '') {
    alert('Please provide the contents.') ;
}
Run Code Online (Sandbox Code Playgroud)