-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.selecting.js
81 lines (78 loc) · 2.8 KB
/
jquery.selecting.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.6.3
(function() {
var $,
__slice = [].slice;
$ = jQuery;
$.fn.extend({
selecting: function(options) {
var log, settings;
settings = $.extend({
debug: false,
bare: true
}, options);
log = function() {
var msg;
msg = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
if (settings.debug && msg) {
return typeof console !== "undefined" && console !== null ? console.log.apply(console, msg) : void 0;
}
};
return this.each(function() {
var $$, remote;
$$ = $(this);
if ((remote = settings.remote) != null) {
return $.getJSON(remote.url, remote.data).done(function(json_array) {
var opt, sel;
if (!settings.bare) {
$$.append(((function() {
var _i, _len, _ref, _results;
_ref = json_array[0].slice(1);
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
sel = _ref[_i];
_results.push("<select name='" + sel[0] + "'><option>" + sel[1] + "</option></select>");
}
return _results;
})()).join(''));
}
$$.find("select[name=" + json_array[0][1][0] + "]").append(((function() {
var _i, _len, _ref, _results;
_ref = json_array.slice(1);
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
opt = _ref[_i];
_results.push("<option value='" + opt[0][0] + "'>" + opt[0][1] + "</option>");
}
return _results;
})()).join(''));
return $$.find("select").change(function(evt) {
var $el, ja;
$el = $(evt.currentTarget);
$el.nextAll('select').find('option[value]').remove();
ja = null;
$($el.next().prevAll('select').get().reverse()).each(function() {
var i;
i = $(this).find('option:selected').index();
if (i > 0) {
return ja = ja ? ja[i] : json_array[i];
}
});
if (ja) {
return $el.nextAll('select').first().append(((function() {
var _i, _len, _ref, _results;
_ref = ja.slice(1);
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
opt = _ref[_i];
_results.push("<option value='" + opt[0][0] + "'>" + opt[0][1] + "</option>");
}
return _results;
})()).join(''));
}
});
});
}
});
}
});
}).call(this);