Skip to content

Instantly share code, notes, and snippets.

@marksteve
Created May 3, 2011 10:54
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save marksteve/953154 to your computer and use it in GitHub Desktop.
Save marksteve/953154 to your computer and use it in GitHub Desktop.
Backbone View for jQuery UI Autocomplete inputs
var Autocomplete = Backbone.View.extend({
render: function() {
var choices = this.options.choices,
selected = this.options.selected,
iterator = this.options.iterator,
label = this.options.label,
allowDupes = this.options.allowDupes,
$el = $(this.el);
$el.autocomplete({
source: function(request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), 'i');
response(choices.filter(function(model) {
return iterator(model, matcher);
}));
},
focus: function(event, ui) {
$el.val(label(ui.item));
return false;
},
select: function(event, ui) {
selected.add(ui.item);
if (!allowDupes) {
choices.remove(ui.item);
}
$el.val('');
return false;
}
}).data('autocomplete')._renderItem = function(ul, item) {
return $('<li/>')
.data('item.autocomplete', item)
.append($('<a/>').text(label(item)))
.appendTo(ul);
};
return this;
}
});
@xunker
Copy link

xunker commented Dec 12, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment