-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.ajaxform.busySpinner.js
More file actions
executable file
·77 lines (67 loc) · 2.38 KB
/
jquery.ajaxform.busySpinner.js
File metadata and controls
executable file
·77 lines (67 loc) · 2.38 KB
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
/**
* Handles ajaxform's session start and end events:
*
* 1. Add and remove hint text
* 2. If the options is given, it will replace the input with spinner
* 3. if the spinner container is given, will toggle spinner
*
* Usage:
* defaultSpinner = '<img src="/img/progress.gif" />'
$.ajaxForm({spinner_default: defaultSpinner, spinner_auto_append: true});
*/
(function($) {
// Session start handler
var onSessionStart = function(event) {
var options = this.options;
$form = this.$form;
$form.find('input:text, input:password, textarea').hint('removeHint');
if (!options.spinner) {
var $inlineSpinner = $form.find('.busy-spinner');
if ($inlineSpinner.length > 0) {
options.spinner = $inlineSpinner;
}
else if (options.spinner_default)
{
options.spinner = $(options.spinner_default);
$form.append(options.spinner);
}
}
if (options.spinner) {
options.spinner.toggle(true);
}
// Disable submit button
if (options.buttons) {
options.buttons.attr('disabled', true);
}
// Set all input to readonly
$form.find('input').attr('readonly', true);
};
// Session end handler
var onSessionEnd = function(event) {
var options = this.options;
$form = this.$form;
// Keep the form busy
if (event.keep_busy_on_success ||
(options.keep_busy_on_success && event.success)) {
return;
}
$form.find('input:text, input:password, textarea').hint('showHint');
if (options.buttons) {
options.buttons.attr('disabled', false);
}
$form.find('input').attr('readonly', false);
if (options.spinner) {
options.spinner.toggle(false);
}
};
// Set up global config
var override = {
onSessionStart: onSessionStart,
onSessionEnd : onSessionEnd,
spinner: null,
spinner_default: null, // html for default spinner
spinner_auto_append: true, // Auto append spinner to container
keep_busy_on_success: false // keeps spinner going even on success
};
$.ajaxForm(override);
})(jQuery);