1
0
Fork 0
forked from 0x2620/oxjs

autocomplete, continued

This commit is contained in:
Rolux 2010-02-18 13:26:37 +05:30
commit 2e6f3cd64b
2 changed files with 61 additions and 24 deletions

View file

@ -1566,15 +1566,20 @@ requires
});
}
function autocomplete(items) {
items = $.map(items, function(title) {
return {
id: title.toLowerCase(), // fixme: need function to do lowercase, underscores etc?
title: title
}
});
self.menu.options({
items: items
}).showMenu();
if (items.length) {
items = $.map(items, function(title) {
return {
id: title.toLowerCase(), // fixme: need function to do lowercase, underscores etc?
title: title
}
});
self.menu.options({
items: items
}).showMenu();
that.val(self.menu.options("items")[0].title);
} else {
self.menu.hideMenu();
}
}
function change() {
@ -1597,14 +1602,32 @@ requires
}
}
function keypress() {
var val = that.val();
if (self.options.autocomplete && val != self.options.value) {
self.options.value = val;
if (val === "") {
self.menu.hideMenu();
} else {
self.options.autocomplete(val, autocomplete);
setTimeout(function() {
var val = that.val();
if (self.options.autocomplete && val != self.options.value) {
self.options.value = val;
if (val === "") {
self.menu.hideMenu();
} else {
self.options.autocomplete(val, autocomplete);
}
}
}, 50);
}
function select(start, end) {
var element = that.$element[0],
range;
if (element.createTextRange) {
range = element.createTextRange();
range.collapse(true);
range.moveStart("character", start);
range.moveEnd("character", end);
range.select();
} else if (element.setSelectionRange) {
element.setSelectionRange(start, end);
} else if (element.selectionStart) {
element.selectionStart = start;
element.selectionEnd = end;
}
}
return that;