Search and Top Navigation
#8581 closed bug (notabug)
Opened September 14, 2012 10:57PM UTC
Closed September 16, 2012 01:31AM UTC
Combobox doesn't allow source to be set after creation (fix)
Reported by: | rzhevskiy | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 1.9.0 |
Component: | ui.autocomplete | Version: | 1.8.23 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
The combobox code given at http://jqueryui.com/demos/autocomplete/#combobox doesn't allow the source to be set after creation. It ignores the changes to the source.
The below change fixes this:
Function _create: set this.input, the rest stays the same:
_create: function() {
var input,
self = this,
select = this.select = this.element.hide(),
selected = select.children( ":selected" ),
value = selected.val() ? selected.text() : "",
wrapper = this.wrapper = $( "<span>" )
.addClass( "ui-combobox" )
.insertAfter( select );
input = this.input = $( "<input>" )
Add function _setOption:
_setOption: function(key, value) {
if (key == "source") {
// Create new option elements for the select
this.element.empty();
for (var i in value) {
var val = i;
var text = value[i];
if (typeof value[i] == "object") {
val = value[i].value;
text = value[i].label;
}
this.element.append('<option value="' + val + '">' + text + '</option>');
}
Empty the current value
this.input.val("");
Have the autocomplete reread the source
this.input.data("autocomplete")._initSource();
} else {
// Delegate to parent class
this.input.data("autocomplete")._setOption(key, value);
}
}
I'm reposting the code with correct formatting, apologies.