Please try this code.
(function($){
function setValues(target, values, remainText){
var opts = $.data(target, 'combobox').options;
var panel = $(target).combo('panel');
if (!$.isArray(values)){values = values.split(opts.separator)}
panel.find('div.combobox-item-selected').removeClass('combobox-item-selected');
var vv = [], ss = [];
for(var i=0; i<values.length; i++){
var v = values[i];
var s = v;
opts.finder.getEl(target, v).addClass('combobox-item-selected');
var row = opts.finder.getRow(target, v);
if (row){
s = row[opts.textField];
}
vv.push(v);
ss.push(s);
}
if (!remainText){
$(target).combo('setText', ss.join(opts.separator));
}
$(target).combo('setValues', vv);
}
function doQuery(target, q){
var state = $.data(target, 'combobox');
var opts = state.options;
var qq = opts.multiple ? q.split(opts.separator) : [q];
var panel = $(target).combo('panel');
panel.find('div.combobox-item-selected,div.combobox-item-hover').removeClass('combobox-item-selected combobox-item-hover');
panel.find('div.combobox-item,div.combobox-group').hide();
var data = state.data;
var vv = [];
$.map(qq, function(q){
q = $.trim(q);
var value = q;
var group = undefined;
for(var i=0; i<data.length; i++){
var row = data[i];
if (opts.filter.call(target, q, row)){
var v = row[opts.valueField];
var s = row[opts.textField];
var g = row[opts.groupField];
var item = opts.finder.getEl(target, v).show();
if (s.toLowerCase() == q.toLowerCase()){
value = v;
item.addClass('combobox-item-selected');
opts.onSelect.call(target, row);
}
if (opts.groupField && group != g){
$('#'+state.groupIdPrefix+'_'+$.inArray(g, state.groups)).show();
group = g;
}
}
}
vv.push(value);
});
_setValues(vv);
function _setValues(vv){
setValues(target, opts.multiple ? (q?vv:[]) : vv, true);
}
}
var query = $.fn.combobox.defaults.keyHandler.query;
$.fn.combobox.defaults.keyHandler.query = function(q,e){
var opts = $(this).combobox('options');
if (opts.mode == 'remote'){
query.call(this, q, e);
} else {
doQuery(this, q);
}
}
})(jQuery);