CKEditor с jquery.validate - PullRequest
       25

CKEditor с jquery.validate

2 голосов
/ 23 июля 2011

У меня было несколько текстовых полей на странице, которые использовали jquery.validate.Я добавил CKEDITOR к этим текстовым областям, и теперь тестеры жалуются, что, когда они делают ошибку, валидатор предупреждает их, что есть ошибка (потому что я делаю updateElement для редакторов перед его вызовом), но текстовые области не получаюткрасная граница больше.Есть ли способ это исправить?Есть ли способ найти экземпляр CKEDITOR в функции errorPlacement?

Ответы [ 4 ]

3 голосов
/ 25 июля 2011

Я обнаружил, что я ошибаюсь не тем деревом, используя errorPlacement. Вместо этого я добавил функцию выделения и отмены выделения:

      errorPlacement: function(error, element)
      {
        $(element).parent('div').prev().append(error[0]);
      },
      highlight: function(element, errorClass, validClass)
      {
        $(element).parent().addClass(errorClass).removeClass(validClass);
      },
      unhighlight: function(element, errorClass, validClass)
      {
        $(element).parent().addClass(validClass).removeClass(errorClass);
      }
1 голос
/ 26 декабря 2013

Это должно решить проблему:

jQuery(function($){
  $("#cms-form").validate({
    event: 'blur',
    rules: {
      title: {required: true},
      content: {
        required: function(textarea) {
          CKEDITOR.instances[textarea.id].updateElement(); // update textarea
          var editorcontent = textarea.value.replace(/<[^>]*>/gi, ''); // strip tags
          return editorcontent.length === 0;
        }
      }
    }
  });
});
1 голос
/ 25 июля 2011

Посмотрите на эти ответы:

По сути, вы будете делать что-то вроде следующего:

<script type="text/javascript">
function validate_editor() {
    CKEDITOR.instances.content.updateElement();
}
</script>
1 голос
/ 25 июля 2011

Ckeditor скрывает текстовую область (display:none) и заменяет ее на iframe с редактируемым содержимым.Я думаю, вы должны попытаться разрешить валидации функцию, которая дает iframe красную рамку, если она недействительна.

Я написал небольшой рабочий пример здесь: http://jsfiddle.net/5wJVu/1/ (работает в Firefox, но я отключил поддержку cke-IE для этого небольшого примера, поэтому может не работать в IE ...)

 $("#submit").click(function(){
     for (var i in CKEDITOR.instances) {
        CKEDITOR.instances[i].updateElement();// to update the textarea
     }
     // setTimeout to let the validation complete first 
     // and then check for the .error classname.
     setTimeout(function(){
         var ta=$("#ckeditor");
         var cke=$("#cke_ckeditor");
         if (ta.hasClass('error') ){cke.addClass('error')}
         else{cke.removeClass('error')}
     },300);
     return true;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...