jQuery 校验:如何让字符数不包含CKEditor生成的token?

jQuery Validation: how to make the amount of characters no include the tokens generated by CKEditor?

在我的 Rails 应用程序中,我想对 CKEditor 的数据使用 jQuery 验证插件,它工作正常,除了 a little inappropriate count 包括 CKEditor 生成的令牌。以下是主要代码:

http://jsfiddle.net/sscs1kbx/3/

Html:

  <textarea name="answer[content]" class="required" id="editor1"></textarea>
  <script> CKEDITOR.replace('answer[content]');</script>
  <br />

javascript:

$('#add-job').validate({
   ignore: [],         
   rules: {
          "answer[content]": {required: function(){CKEditorUpdate();},
                            minlength: 18 }
        },
   messages: {
                "answer[content]": "Required at least 10 characters"
             },
  });

function CKEditorUpdate(){
    for(instance in CKEDITOR.instances){
       CKEDITOR.instances[instance].updateElement();
     }
}

这里,minlength设置为minlength: 18,但我只能输入11个字符ddddddddddd,所以我猜最终的textarea的字符数包括诸如<p></p>,但我希望jQuery验证只包括用户输入的字符,怎么办?

终于解决了,因为简单的设置一些参数并不能排除html的token,我用addMethods给它指定了一个叫minlengthxo的方法:http://jsfiddle.net/sscs1kbx/4/

jQuery.validator.addMethod("minlengthxo", function (value, element,param) {
  originalVal = CKEDITOR.instances.editor1.getData().replace(/<[^>]*>/g, '');
  var length = $.isArray( originalVal ) ? value.length : this.getLength( originalVal, element );
  return length >= param;
}, "default errorMessage");

$('#add-job').validate({

ignore: [],         
rules: {
        "answer[content]": {
            required: function() 
                     {
                       CKEditorUpdate();                        
                     }, 
                     minlengthxo: 18
                }
            },
            messages: {
                "answer[content]": "You need input at least 18 characters, now you entered "
            },
        });

    function CKEditorUpdate(){
       for(instance in CKEDITOR.instances){
          CKEDITOR.instances[instance].updateElement();
    }
}