Функция для отправки форм по 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');