jQuery validate - сообщения об ошибках в верхней части формы И по каждому элементу - PullRequest
2 голосов
/ 04 марта 2011

Я использую плагин jquery validate и хочу разместить ошибки рядом с недопустимым элементом формы.Тем не менее, я ТАКЖЕ хочу, чтобы все ошибки были перечислены в верхней части формы.

Настройки параметров, кажется, только позволяют вам сделать одно или другое, но не оба.

Так что еслиесть способ установить параметры так, чтобы это произошло, что бы легко решить проблему!


Чтобы попытаться обойти это, я написал фрагмент jQuery, чтобы взять сообщения об ошибках и добавить их в верхнюю часть формы (и связать их с местом ошибки).Однако, когда я пытаюсь вызвать эту функцию в методе validate (используя обработчики invalidHandler или errorPlacement), все работает нормально, НО форма отправляется.Я не хочу, чтобы форма отправлялась, так как jQuery существует для проверки клиентской стороны.

Мои параметры проверки выглядят так:

$("#memberRegistration").validate({
    invalidHandler: function(form, validator) {
        var errors = validator.numberOfInvalids();
        if (errors) {
            var message = errors == 1
                    ? 'You missed 1 field. It has been highlighted'
                    : 'You missed ' + errors + ' fields. They have been highlighted';
            $("div.errorBox span").html(message);
        }
        $("div.errorBox").removeClass('noDisplay');
        errorCopy();                   // <-- my custom function 
    },
    wrapper: "div",
    errorPlacement: function(error, element) {
        element = element.closest('li');
        element = element.children(':first-child');
        error.insertBefore(element);
        error.addClass('message');    
    },
    meta: "validate",
    rules: {
        "memberRegistrationFormDetails.Title": { required: true },

Почему я не могу вызвать функциюиз обработчиков invalidHandler или errorPlacement без отправки формы?

Спасибо!

1 Ответ

2 голосов
/ 07 марта 2011

Нашел решение.Я добавил соответствующий код прямо в обработчик errorPlacement без вызова функции из другого места и с некоторыми изменениями:

 errorPlacement: function(error, element) {
        element = element.closest('li');
        element = element.children(':first-child');
        error.insertBefore(element);
        error.addClass('message');
        $(function() {                                 // my function
            var errorIndex = $(error).index('div');
            var errorId = 'errordiv' + errorIndex.toString();
            $(error).attr('id', errorId);
            $('.errorList').append('<li><a href="#' + errorId + '">' + $(error).text() + '</a></li>');
        });    
    },

Этот код принимает сообщение об ошибке и добавляет ссылку на него в мой контейнер errorList вверхуформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...