Показать сообщение отдельно
  #1 (permalink)  
Старый 01.03.2015, 09:51
Кандидат Javascript-наук
Отправить личное сообщение для zlodiak Посмотреть профиль Найти все сообщения от zlodiak
 
Регистрация: 24.02.2012
Сообщений: 104

зацикленность отправки. исправить
помогите пожалуйста решить проблему

для валидации формы я использую jquery + jqueryvalidate + additianal-methods. форма валидируется и даже отправляется. проблема в том, что перед отправкой метод submitHandler выполняется примерно 600 раз что иногда приводит к отмене отправки в браузерах типа IE

в целях отладки я поставил console.log() в submitHandler:
submitHandler: function(){
            console.log('submitHandler!');
            $( "#brief_form_new_test" ).submit();
        }


вот jsfiddle

хотелось бы чтобы submitHandler выполнялся только один раз как и положено

validation:
$.validator.setDefaults({
        invalidHandler: function(){ 
            var fileInput = document.getElementById("fileUploadField");

            if($('#brief_form_new_test .file-add input.error').length >= 1){
                $('.file-add').css({
                    'background': 'url("../img/attache.png") 0 -88px'
                });
            }else{ 
                $('.file-add').css({
                    'background': 'url("../img/attache.png") 0 0'
                });
            };

            //console.log("not submitted!");
        },
        submitHandler: function(){
            console.log('submitHandler!');
            $( "#brief_form_new_test" ).submit();
        }
    });

    $.validator.addMethod("checkFileSize",function(value, element) {
        // check filesize
        var fileInput = document.getElementById("fileUploadField"),
            fileSize;

        if(fileInput.files[0]){
            if(fileInput.files[0].size > 134217728){
                return false;
            }else{
                return true;
            }
        }else{
            $('.file-add label.error').empty();
            return true
        }
    }, "Размер файла превышен");    

    $().ready(function(){
        $("#brief_form_new_test").validate({
            rules: {
                attachment: {
                    required: false,
                    checkFileSize: true,
                    extension: "doc,docx,txt,pdf,jpg,jpeg,png"
                },
                message_new: {
                    required: true,
                    minlength: 10
                },
                name_new: "required",
                email_new: {
                    required: true,
                    email: true
                },
                phone_new: {
                    "required": true,
                    "pattern": /[-0-9 -()+]+$/
                }
            },
            messages: {
                attachment: {
                    required: 'File required',
                    checkFileSize: 'Размер файла превышен',
                    extension: "Неверный формат файла",
                },
                message_new: {
                    required: "Коротко опишите проект",
                    minlength: "Введите не менее 10 символов"
                },
                name_new: "Введите ФИО",
                email_new: "Введите корректный адрес",
                phone_new: {
                    required: "Введите телефон",
                    pattern: "Введите корректный телефон"
                }
            }
        });
    });

Последний раз редактировалось zlodiak, 01.03.2015 в 11:07.
Ответить с цитированием