代码之家  ›  专栏  ›  技术社区  ›  Milan BabuÅ¡kov

如何检查CKEditor中是否有文本?

  •  18
  • Milan BabuÅ¡kov  · 技术社区  · 14 年前

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

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

    如何检查文本?

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

    5 回复  |  直到 10 年前
        1
  •  32
  •   Samuel Meacham    14 年前

    这将起作用:

    $("#editorContainer iframe").contents().find("body").text();
    

    它将只包含文本,而不包含任何html标记。

    CKEditor demo page . 使用Firefox和Firebug,转到Firebug控制台,然后键入:

    $("#demoInside iframe").contents().find("body").text();
    

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

    $("#demoInside iframe").contents().find("body").length;
    

    更新2

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

    jQuery("#cke_editor1 iframe").contents().find("body").text();
    

    总之, . 是否从 <div> <textarea> 这并不重要。只要你能选择 <iframe> 您可以使用 .contents().find("body").text() 获取iframe的文本。您测试过jquery选择器了吗 .length == 1 ?

        2
  •  15
  •   a coder    10 年前

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

    Documentation

        3
  •  5
  •   Jamal Abdul Nasir    7 年前

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

    var _contents = CKEDITOR.instances.editor1.document.getBody().getText();
    if (_contents == '') {
        alert('Please provide the contents.') ;
    }
    
        4
  •  1
  •   chebaby    6 年前

    CKEditor 5-经典编辑器

    ckeditor 5版本11.0.1

    ckeditor 5的问题是,即使它/看起来是空的,在提交表单时,它也不会像您预期的那样发送空值,而是发送以下字符串:

    <p>&nbsp;</p>
    

    这不是你想要的,尤其是当你想在服务器端设置一些验证规则的时候。

    为了避免这种头痛,我使用了基于 light-flight 回答:

    $(document).ready(function() {
    
        var editorContainer = document.querySelector('#editor');
    
        var check_if_empty = function(val) {
    
            return $.makeArray($(val)).every(function(el) {
    
                return el.innerHTML.replace(/&nbsp;|\s/g, '').length === 0;
            });
        };
    
        var clear_input_if_empty_content = function(input) {
    
            var $form = $(input).parents('form');
    
            $form.on('submit', function() {
    
                if (check_if_empty($(input).val())) {
    
                    $(input).val('');
                }
            });
        };
    
        ClassicEditor.create( editorContainer )
            .then(function(editor) {
                clear_input_if_empty_content(editorContainer)
            })
            .catch(function(error) {
                console.log(error);
            });
    });
    
        5
  •  1
  •   user3230794    5 年前

    <script>
    CKEDITOR.replace('messagechat');
    
    var feedback = CKEDITOR.instances.messagechat.document.getBody().getChild(0).getText(); 
    // get Data
    alert(feedback);
    </script>
    
        6
  •  0
  •   Michael Robinson    14 年前

    我们使用原型库和以下附加内容:

    Element.addMethods({  
      getInnerText: function(element) {
        element = $(element);
        return element.innerText && !window.opera ? element.innerText
          : element.innerHTML.stripScripts().unescapeHTML().replace(/[\n\r\s]+/g, ' ');
      }
    });
    

    (感谢 Tobie Langel )

    我可以使用以下函数来确定CKEditor中是否有任何实际文本:

    function editorEmpty(instanceName){
    
        var ele = (new Element('div')).update(CKEDITOR.instances[instanceName].getData()); 
    
        return (ele.getInnerText() == '' || innerText.search(/^(&nbsp;)+$/i) == 0);
    }
    

    &nbsp; 同样-通常当编辑器显示为空时,它实际上包含如下内容: <p>&nbsp;</p> .