-
Notifications
You must be signed in to change notification settings - Fork 12
/
uniform.js
95 lines (81 loc) · 2.12 KB
/
uniform.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*!
* DLE UniForm — унверсальные формы для DLE
*
* @author ПафНутиЙ <pafnuty10@gmail.com>
* @link http://pafnuty.name/
* @link https://twitter.com/pafnuty_name
*/
var doc = $(document);
doc
// ajax-отправка формы + эффекты
.on('submit', '[data-uf-form]', function () {
var $this = $(this),
laddaLoad,
options = {
beforeSubmit: ufStart,
success: ufDone,
};
$this.ajaxSubmit(options);
return false;
})
// Открытие ajax-окна с формой
.on('click', '[data-uf-open]', function (e) {
var $this = $(this),
src = $this.data('ufOpen'),
data = $this.data('ufSettings');
$.magnificPopup.open({
items: {
src: src,
},
focus: '.uf-input-first',
type: 'ajax',
ajax: {
settings: {
data: data
}
}
});
return false;
})
// Убираем класс с из инпута с ошибочным заполнением
.on('keyup input', '.uf-input-error', function (e) {
var $this = $(this);
if (e.type == 'input') {
doc.off('keyup', '.uf-input-error');
}
if ($this.val().length) {
$this.removeClass('uf-input-error');
}
});
// Функция, выполняемая перед отправкой формы
function ufStart(formData, jqForm) {
laddaLoad = jqForm.find('.ladda-button').ladda();
laddaLoad.ladda('start');
return true;
}
// Функция, выполняемая после удачной отправки формы
function ufDone(responseText, statusText, xhr, $form) {
var $responseText = $(responseText),
responseResult = ($responseText.is('form')) ? $responseText.html() : responseText;
if (statusText == 'success') {
laddaLoad.ladda('stop');
$form.html(responseResult);
}
}
jQuery(document).ready(function ($) {
var $inlineUniform = $('[data-uf-inline]');
if ($inlineUniform.length) {
$.each($inlineUniform, function (index, val) {
var $this = $(this),
url = $this.data('ufInline'),
data = $this.data('ufSettings');
$.ajax({
url: url,
data: data,
})
.done(function (data) {
$this.html(data);
});
});
};
});