-
Notifications
You must be signed in to change notification settings - Fork 0
/
ajax-inputs.js
81 lines (70 loc) · 2.07 KB
/
ajax-inputs.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
// Generated by CoffeeScript 1.3.3
(function() {
var $, AjaxInputs, defaults, namespace;
$ = jQuery;
defaults = {
selector: 'input',
events: 'change',
method: 'POST',
data: {},
dataType: 'json'
};
namespace = 'ajaxInputs';
$.fn[namespace] = {
defaults: defaults
};
$.fn[namespace] = function(option) {
var args;
args = arguments;
return this.each(function() {
var $this, data, options;
$this = $(this);
if (typeof option === 'object') {
options = option;
}
data = $this.data(namespace);
if (!data) {
$this.data(namespace, data = new AjaxInputs(this, options));
}
if (typeof option === 'string') {
args = Array.prototype.slice.call(arguments, 0);
args.shift();
return data[option].apply(data, args);
}
});
};
AjaxInputs = (function() {
function AjaxInputs(el, options) {
this.options = options;
this.$el = $(el);
this.options = $.extend({}, defaults, this.options);
this.$el.on(this.options.events, this.options.selector, $.proxy(this.onChange, this));
}
AjaxInputs.prototype.onChange = function(e) {
var $input, data,
_this = this;
$input = $(e.target);
data = $.extend({}, this.options.data);
data[$input.attr('name')] = $input.val();
return (function($input) {
return $.ajax({
url: _this.options.url,
data: data,
type: _this.options.method,
dataType: _this.options.dataType,
success: function(response) {
if ($.fn.formUnload) {
_this.$el.closest('form').formUnload('stored', $input);
}
return _this.$el.trigger("" + namespace + ":done", response, e);
}
}).fail(function(jqXHR) {
return _this.$el.trigger("" + namespace + ":fail", jqXHR, e);
}).always(function(response) {
return _this.$el.trigger("" + namespace + ":always", response, e);
});
})($input);
};
return AjaxInputs;
})();
}).call(this);