--- 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() {