Title: combobox does not select when typing value & using enter key
Post by: devnull on June 02, 2015, 08:08:58 PM
http://jsfiddle.net/seKvb/53/
If you select the combobox text field, type "one" on your keyboard and then press enter the record does not get selected.
I have tried with both selectOnNavigation:false and selectOnNavigation:true neither appears to work
How can I achieve this functionality ?
Title: Re: combobox does not select when typing value & using enter key
Post by: stworthy on June 03, 2015, 12:51:46 AM
Please use the 'onChange' event instead, or download the patch from http://www.jeasyui.com/download/downloads/jquery-easyui-1.4.2-patch.zip.
Title: Re: combobox does not select when typing value & using enter key
Post by: devnull on June 03, 2015, 02:31:45 AM
Can't use the onchange even as it fires on every keydown, what I want it to do is only fire when the enter key is pressed.
Thanks, but I am not running 1.4.2 as it breaks all of the work-arounds and hacks that I have implemented.
Which part of the patches code specifically deals with this event ?
Thanks
Title: Re: combobox does not select when typing value & using enter key
Post by: stworthy on June 03, 2015, 07:47:33 AM
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);
|