--- tag_complete/tag_complete.js 2006/08/18 23:10:48 48 +++ tag_complete/tag_complete.js 2006/08/19 10:50:49 51 @@ -7,16 +7,17 @@ var _tag = { name: new Array(), obj: new Array(), - selected_obj: new Array(), + selected: new Array(), + + current: null, // current selected suggestion select: function( tag ) { $.log.info('filter '+tag); - _tag.selected_obj = Array(); var j = 0; var tag_len = tag.length; - var suggest = ''; - $('#suggest').html( suggest ); if (j > 0) { - $('#suggest li:nth(0)').addClass('selected'); + $('#suggest a:nth(0)').addClass('selected'); _tag.current = 0; } }, clean_selected: function() { - for(var i = 0; i < _tag.selected_obj.length; i++) { - jQuery.className.remove( _tag.selected_obj[i], 'selected' ); + for(var i = 0; i < _tag.selected.length; i++) { + jQuery.className.remove( _tag.selected[i].obj, 'selected' ); } var c = _tag.current; @@ -63,25 +64,28 @@ return true; } - var s = $('#suggest li:nth('+c+')').html(); + var s = $('#suggest a:nth('+c+')').html(); if (s == null) { $.log.debug('no suggest, return true'); return true; } - _tag.add_tag( s ); - _tag.clean_selected(); + var i = _tag.selected[c].i; + $.log.debug('take_suggested '+i+':'+s); + _tag.add_tag( s, i ); return false; }, - add_tag: function( t ) { - $.log.info('add: '+t); + add_tag: function( t, i ) { + $.log.info('add '+i+': '+t); + _tag.focus(); + jQuery.className.add( _tag.obj[i], 'entered' ); + _tag.clean_selected(); $('#tags').val( $('#tags').val().replace( /[^ ]*$/, t + ' ' ) ); - _tag.focus(); return false; }, @@ -93,14 +97,14 @@ } var to = c + where; $.log.info('move_suggested('+where+') '+c+' -> '+to); - if (to < 0 || to >= _tag.selected_obj.length) { + if (to < 0 || to >= _tag.selected.length) { $.log.error('move to invalid element '+to); return; } - var s = '#suggest li:nth('+c+')'; + var s = '#suggest a:nth('+c+')'; $( s ).removeClass('selected'); $.log.debug('remove selected from '+s); - s = '#suggest li:nth('+to+')'; + s = '#suggest a:nth('+to+')'; $( s ).addClass('selected'); $.log.debug('add selected to '+s); _tag.current = to; @@ -123,7 +127,7 @@ _tag.name[i] = n; _tag.obj[i] = this; this.onclick = function() { - return _tag.add_tag( n ); + return _tag.add_tag( n, i ); } }); $.log.info( 'found ' + _tag.name.length + ' tags' ); @@ -160,7 +164,7 @@ _tag.select(t); - $.log.info('selected ' + _tag.selected_obj.length + ' tags'); + $.log.info('selected ' + _tag.selected.length + ' tags'); return true; }).submit( function() {