summaryrefslogtreecommitdiff
path: root/share/www/script/jquery.suggest.js
diff options
context:
space:
mode:
Diffstat (limited to 'share/www/script/jquery.suggest.js')
-rw-r--r--share/www/script/jquery.suggest.js24
1 files changed, 16 insertions, 8 deletions
diff --git a/share/www/script/jquery.suggest.js b/share/www/script/jquery.suggest.js
index cc8fe549..54217390 100644
--- a/share/www/script/jquery.suggest.js
+++ b/share/www/script/jquery.suggest.js
@@ -65,9 +65,9 @@
var newVal = $.trim(input.val());
if (force || newVal != prevVal) {
if (force || newVal.length >= options.minChars) {
- options.callback($.trim(input.val()), function(items) {
- show(items);
- });
+ options.callback.apply(elem, [$.trim(input.val()), function(items, render) {
+ show(items, render);
+ }]);
} else {
dropdown.hide();
}
@@ -75,14 +75,22 @@
}
}
- function show(items) {
+ function show(items, render) {
if (!items) return;
if (!items.length) { dropdown.hide(); return; }
- var html = [];
+ render = render || function(idx, value) { return value; }
+ dropdown.empty();
for (var i = 0; i < items.length; i++) {
- html.push('<li>' + items[i] + '</li>');
+ var item = $("<li></li>").data("value", items[i]);
+ var rendered = render(i, items[i]);
+ if (typeof(rendered) == "string") {
+ item.text(rendered);
+ } else {
+ item.append(rendered);
+ }
+ item.appendTo(dropdown);
}
- dropdown.html(html.join("")).slideDown("fast");
+ dropdown.slideDown("fast");
dropdown.children('li').click(function(e) {
$(this).addClass("selected");
commit();
@@ -92,7 +100,7 @@
function commit() {
var sel = getSelection();
if (sel) {
- prevVal = sel.text();
+ prevVal = sel.data("value");
input.val(prevVal);
dropdown.hide();
}