Данные ckeditor не проверяются с помощью проверки jQuery

Я знаю, что в этом есть масса вопросов, но я не могу заставить это работать на всю жизнь. Я попробовал несколько решений, включая этот, второй ответ здесь и this, и я не могу получить сообщение "required". Форма по-прежнему отправляется, когда поле ckeditor пусто.

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

Вот мой текущий код, и я создал скрипку: http://jsfiddle.net/BmZ93/1/

     $('#add-job').validate({
                rules: {
                editor1: {
                    required: function() 
                    {
                    CKEDITOR.instances.editor1.updateElement();
                    }
                    }
                },
                messages: {
                Job_Title: "Required",
                Job_Location: "Required",
                jobid: "Required",
                Job_Cat: "Required",
                editor1: "Required"
                } 
        });

Ответы

Ответ 1

Здесь он обновляет ваш код с помощью этого

http://jsfiddle.net/rohanppatil/BmZ93/8/

$(document).ready(function() {
$('#add-job').validate({
    ignore: [],         
    rules: {
                editor1: {
                    required: function() 
                    {
                    CKEDITOR.instances.editor1.updateElement();
                    }
                    }
                },
                messages: {
                Job_Title: "Required",
                Job_Location: "Required",
                jobid: "Required",
                Job_Cat: "Required",
                editor1: "Required"
                },
                /* use below section if required to place the error*/
                errorPlacement: function(error, element) 
                {
                    if (element.attr("name") == "editor1") 
                   {
                    error.insertBefore("textarea#editor1");
                    } else {
                    error.insertBefore(element);
                    }
                }
            });
});

Надеюсь, что это сработает. Я тестировал это в JSFIDDLE, работая нормально

Ответ 2

Вы должны изменить значение свойства ignore, которое по умолчанию содержит значение :hidden. поскольку CKEDITOR скрывает, что проверка jQuery в textarea не проверяет элемент:

ignore: [] 

http://jsfiddle.net/BmZ93/5/

Также обратите внимание, что вы должны возвращать логическое значение в свой метод required, вы этого не делаете. Здесь проходит прохождение true.

required: true

Это обновленный код, который также использует метод errorPlacement для добавления границы к обертке CKEDITOR, вы можете настроить его в соответствии с вашими потребностями:

$(document).ready(function () {
    $('#add-job').validate({
        rules: {
            'editor1': {
                required: true
            }
        },
        messages: {
            Job_Title: "Required",
            Job_Location: "Required",
            jobid: "Required",
            Job_Cat: "Required",
            editor1: "Required"
        },
        errorPlacement: function(error, $elem) {
            if ($elem.is('textarea')) {
                $elem.next().css('border', '1px solid red');
            }
        },
        ignore: []
    });
});