autocomplete, continued

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

View File

@ -1566,6 +1566,7 @@ requires
}); });
} }
function autocomplete(items) { function autocomplete(items) {
if (items.length) {
items = $.map(items, function(title) { items = $.map(items, function(title) {
return { return {
id: title.toLowerCase(), // fixme: need function to do lowercase, underscores etc? id: title.toLowerCase(), // fixme: need function to do lowercase, underscores etc?
@ -1575,6 +1576,10 @@ requires
self.menu.options({ self.menu.options({
items: items items: items
}).showMenu(); }).showMenu();
that.val(self.menu.options("items")[0].title);
} else {
self.menu.hideMenu();
}
} }
function change() { function change() {
@ -1597,6 +1602,7 @@ requires
} }
} }
function keypress() { function keypress() {
setTimeout(function() {
var val = that.val(); var val = that.val();
if (self.options.autocomplete && val != self.options.value) { if (self.options.autocomplete && val != self.options.value) {
self.options.value = val; self.options.value = val;
@ -1606,6 +1612,23 @@ requires
self.options.autocomplete(val, autocomplete); 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; return that;
}; };

View File

@ -327,15 +327,29 @@
] ]
}).addClass("margin").width(96).appendTo(mainPanel); }).addClass("margin").width(96).appendTo(mainPanel);
Ox.Input({ Ox.Input({
id: "auto", id: "state",
autocomplete: function(value, callback) { autocomplete: function(value, callback) {
callback([ value = value.toLowerCase();
"Alabama", "Alaska", "Arizona", "California", var items = [];
"Indiana", "Illinois", "Iowa", states = [
"Kansas", "Kentucky", "Alabama", "Alaska", "Arizona", "Arkansas", "California",
"Michigan", "New York", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida",
"Tennessee" "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana",
]); "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine",
"Maryland", "Massachusetts", "Michigan", "Minnessota", "Mississippi",
"Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire",
"New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota",
"Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island",
"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah",
"Vermont", "Virginia", "Washington", "West Virgina", "Wisconsin",
"Wyoming"
],
$.each(states, function(i, state) {
if (Ox.startsWith(state.toLowerCase(), value)) {
items.push(state);
}
});
callback(items);
}, },
placeholder: "State" placeholder: "State"
}).addClass("margin").width(96).appendTo(mainPanel); }).addClass("margin").width(96).appendTo(mainPanel);