将公共代码与CKEditor和jQuery验证一起使用

时间:2010-12-06 21:17:52

标签: javascript jquery jquery-validate ckeditor

我在我正在处理的项目中使用CKEditor和jQuery Validation插件。

我在过去几天在StackOverflow.com上阅读了几篇非常有用的帖子,这些帖子确实帮助我验证了CKEditor,谢谢!

我现在想要推出我编写的代码来处理一个编辑器实例到项目的其余部分,理想情况下不需要复制代码或按ID指定每个单独的实例。由于我的客户的规格,它们有很多页面。

我页面页脚中的代码是:

$(document).ready(function() {
 CKEDITOR.instances["itissue"].on("instanceReady", function() {
  // Set keyup event
  this.document.on("keyup", updateValue);

  // Set paste event
  this.document.on("paste", updateValue);
 });

 function updateValue() {
    CKEDITOR.instances.itissue.updateElement(); 
    $("#itissue").trigger('keyup');                   
 } 
});

itissue是我的实例的ID,每个页面的ID都不同。我认为它需要替换为“all textareas”的某种类型的通用标识符,但这是我的编程和Google搜索技能已过期的地方。

如果有人有任何想法,我会很感激在正确的方向上轻推......

2 个答案:

答案 0 :(得分:4)

下面是我用来解决这个问题的代码,我希望它对将来的某些人有用。

<script type="text/javascript">
$(document).ready(function() {
    for(var name in CKEDITOR.instances) {
        CKEDITOR.instances[name].on("instanceReady", function() {
            // Set keyup event          
            this.document.on("keyup", updateValue);
            // Set paste event
            this.document.on("paste", updateValue);     
        }); 

        function updateValue() {
            CKEDITOR.instances[name].updateElement(); 
            $('textarea').trigger('keyup');
        }
   }    
});
</script>

答案 1 :(得分:2)

我会在提交处理程序中验证编辑器,而不是监视keyup并调用updateElement onkeyup。

要回答您的问题,您需要遍历CKEDITOR.instances对象

// validator submit handler
var submitHandle = function(){
    for(var name in CKEDITOR.instances){
        CKEDITOR.instances[name].updateElement(); // update all instances of ckEditors
    }
    // proceed with validation check
};

这样您就不需要知道编辑器实例的名称了。