--- tag_complete/tag_complete.js 2006/08/18 23:31:16 50 +++ tag_complete/tag_complete.js 2006/08/19 10:50:49 51 @@ -7,13 +7,14 @@ 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 = ''; @@ -25,9 +26,11 @@ jQuery.className.add( _tag.obj[i], 'selected' ); - suggest += '' + t + ' '; - _tag.selected_obj[j] = _tag.obj[i]; - j++; + suggest += '' + t + ' '; + _tag.selected[j++] = { + i: i, + obj: _tag.obj[i], + } } } @@ -40,8 +43,8 @@ }, 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; @@ -67,14 +70,17 @@ return true; } - _tag.add_tag( s ); + 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); - _tag.clean_selected(); + 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 + ' ' @@ -91,7 +97,7 @@ } 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; } @@ -121,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' ); @@ -158,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() {