45 lines
No EOL
1.4 KiB
JavaScript
45 lines
No EOL
1.4 KiB
JavaScript
(function ($, document, window, undefined) {
|
|
|
|
var s2 = window.s2 = window.s2 || {};
|
|
var data = s2.data = s2.data || {};
|
|
var util=s2.util;
|
|
|
|
data.local = util.clazz(Object, {
|
|
construct: function (select) {
|
|
this.select = select;
|
|
},
|
|
lookup: function () {
|
|
var data = [], self = this;
|
|
this.select.find(":selected").each(function () {
|
|
data.push(self.item($(this)));
|
|
});
|
|
return data;
|
|
},
|
|
query: function (params) {
|
|
var data = [], self = this;
|
|
self.select.find("option").each(function () {
|
|
var option = $(this);
|
|
if (self.matches(params, option)) {
|
|
data.push(self.item($(this)));
|
|
}
|
|
});
|
|
return data;
|
|
},
|
|
matches: function (params, option) {
|
|
if (params && params.term) {
|
|
var text = option.text().toUpperCase();
|
|
if (text.indexOf(params.term.toUpperCase()) >= 0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
|
|
item: function (option) {
|
|
return {value: option.attr("value"), text: option.text(), element: option.get(0)};
|
|
}
|
|
});
|
|
|
|
})(jQuery, document, window); |