h-roman
10/26/2015 - 7:49 AM

Функция для отправки форм по AJAX

Функция для отправки форм по AJAX

    ajaxer={
        construct: function(selector) {
            this.form=$(selector);

            this.inputs=this.form.find(' :input');

            this.bindEvents();

            var self=this;

            console.log(self);
        },
        bindEvents: function() {
            self=this;

            // Отправка формы
            this.form.submit(function(e) {
                e.preventDefault();
                if(!self.checkForm()) {return false};

                if(self.form.data("capcha")) {
                    if(!self.capcha()) {return false}
                }

                var df=new FormData(self.form.get(0));

                $.ajax({
                    type: 'POST',
                    url: self.form.attr('action'),
                    data: df,
                    processData: false,
                    contentType: false,
                    success: function(data) {
                        alert(data);
                    },
                    error: function(data) {
                        console.error(data);
                    }
                });

            })

            // Убираем класс ошибки при фокусе
            jQuery(document).on("keydown",".error",function(){
                $(this).removeClass('error')
            });

        },


        checkForm:function() {
            var stat=true;
            this.inputs.filter('.required').each(function() {
                if(!$(this).val()){$(this).addClass('error').focus(); stat=false;}
            })
            if(stat==false) {alert('Вы заполнили не все поля!')}
            return stat;
        },

        capcha: function () {
            var a=Math.floor(Math.random() * (10 - 0 + 1)) + 0;
            var b=Math.floor(Math.random() * (10 - 0 + 1)) + 0;
            var c=a+b;
            var d=prompt('Сколько будет '+a+'+'+b+'=?');

            if (d==c) {
                return true;
            }
            else {
                alert('Не верный ответ');
                return false;
            }

        }

    };


    ajaxer.construct('FORM_SELECTOR');