jQuery验证:如何使字符的数量不包括CKEditor生成的令牌

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

本文关键字:CKEditor 不包括 令牌 何使 字符 jQuery 验证      更新时间:2023-09-26

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

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

Html:

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

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

这里,minlength是设置minlength: 18,但我只能输入11字符ddddddddddd,所以我猜最后的文本区域的字符计数包括令牌,如<p></p>,但我希望jQuery验证只包括字符用户输入,我该怎么办?

我终于解决了这个问题,因为简单地设置一些参数不能排除html令牌,我使用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: {
        "answerswer[content]": {
            required: function() 
                     {
                       CKEditorUpdate();                        
                     }, 
                     minlengthxo: 18
                }
            },
            messages: {
                "answerswer[content]": "You need input at least 18 characters, now you entered "
            },
        });
    function CKEditorUpdate(){
       for(instance in CKEDITOR.instances){
          CKEDITOR.instances[instance].updateElement();
    }
}