/** * combobox - jQuery EasyUI * * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved. * * Licensed under the GPL or commercial licenses * To use it on other terms please contact us: info@jeasyui.com * http://www.gnu.org/licenses/gpl.txt * http://www.jeasyui.com/license_commercial.php * * Dependencies: * combo * */ (function($){ function findRowBy(target, value, param, isGroup){ var state = $.data(target, 'combobox'); var opts = state.options; if (isGroup){ return _findRow(state.groups, param, value); } else { return _findRow(state.data, (param ? param : state.options.valueField), value); } function _findRow(data,key,value){ for(var i=0; i panel.height()){ var h = panel.scrollTop() + item.position().top + item.outerHeight() - panel.height(); panel.scrollTop(h); } } } function nav(target, dir){ var opts = $.data(target, 'combobox').options; var panel = $(target).combobox('panel'); var item = panel.children('div.combobox-item-hover'); if (!item.length){ item = panel.children('div.combobox-item-selected'); } item.removeClass('combobox-item-hover'); var firstSelector = 'div.combobox-item:visible:not(.combobox-item-disabled):first'; var lastSelector = 'div.combobox-item:visible:not(.combobox-item-disabled):last'; if (!item.length){ item = panel.children(dir=='next' ? firstSelector : lastSelector); // item = panel.children('div.combobox-item:visible:' + (dir=='next'?'first':'last')); } else { if (dir == 'next'){ item = item.nextAll(firstSelector); // item = item.nextAll('div.combobox-item:visible:first'); if (!item.length){ item = panel.children(firstSelector); // item = panel.children('div.combobox-item:visible:first'); } } else { item = item.prevAll(firstSelector); // item = item.prevAll('div.combobox-item:visible:first'); if (!item.length){ item = panel.children(lastSelector); // item = panel.children('div.combobox-item:visible:last'); } } } if (item.length){ item.addClass('combobox-item-hover'); var row = findRowBy(target, item.attr('id'), 'domId'); if (row){ scrollTo(target, row[opts.valueField]); if (opts.selectOnNavigation){ select(target, row[opts.valueField]); } } } } /** * select the specified value */ function select(target, value){ var opts = $.data(target, 'combobox').options; var values = $(target).combo('getValues'); if ($.inArray(value+'', values) == -1){ if (opts.multiple){ values.push(value); } else { values = [value]; } setValues(target, values); opts.onSelect.call(target, findRowBy(target, value)); } } /** * unselect the specified value */ function unselect(target, value){ var opts = $.data(target, 'combobox').options; var values = $(target).combo('getValues'); var index = $.inArray(value+'', values); if (index >= 0){ values.splice(index, 1); setValues(target, values); opts.onUnselect.call(target, findRowBy(target, value)); } } /** * set values */ function setValues(target, values, remainText){ var opts = $.data(target, 'combobox').options; var panel = $(target).combo('panel'); panel.find('div.combobox-item-selected').removeClass('combobox-item-selected'); var vv = [], ss = []; for(var i=0; i'); dd.push(opts.groupFormatter ? opts.groupFormatter.call(target, g) : g); dd.push(''); } } else { group = undefined; } var cls = 'combobox-item' + (row.disabled ? ' combobox-item-disabled' : '') + (g ? ' combobox-gitem' : ''); row.domId = '_easyui_combobox_' + itemIndex++; dd.push('
'); dd.push(opts.formatter ? opts.formatter.call(target, row) : s); dd.push('
'); // if (item['selected']){ // (function(){ // for(var i=0; i