--- tag_complete/tag_complete.js 2006/08/18 21:58:54 45 +++ tag_complete/tag_complete.js 2006/08/18 22:59:04 46 @@ -47,23 +47,36 @@ } var c = _tag.current; - if (c == null) return; + if (c == null) return c; $('#suggest').html(''); _tag.current = null; + + return c; }, take_suggested: function() { - if (_tag.current == null) return; - var s = $('#suggest li:nth('+_tag.current+')').html(); + var c = _tag.current; + if (c == null) { + $.log.debug('no current, return true'); + return true; + } + + var s = $('#suggest li:nth('+c+')').html(); + if (s == null) { + $.log.debug('no suggest, return true'); + return true; + } + $.log.info('take suggestion: '+s); $('#tags').val( $('#tags').val().replace( - /^([^ ][^ ]* )*[^ ]*$/, '$1' + s + ' ' + /[^ ]*$/, s + ' ' ) ); - _tag.focus(); + _tag.clean_selected(); + return false; }, move_suggested: function( where ) { @@ -115,19 +128,15 @@ e.preventDefault(); _tag.move_suggested( -1 ); return false; - break; case 40: // down e.preventDefault(); _tag.move_suggested( +1 ); return false; - break; case 9: // tab case 13: // return + if (_tag.current != null) _tag.focus(); e.preventDefault(); - _tag.take_suggested(); - return false; - break; } @@ -146,21 +155,10 @@ return true; }).submit( function() { $.log.debug('submit'); - if (_tag.current == null) { - _tag.clean_selected(); - return true; - } else { - return false; - } + return _tag.take_suggested(); }).blur( function() { $.log.debug('blur'); - _tag.clean_selected(); - if (_tag.current == null) { - return true; - } else { - _tag.focus(); - return false; - } + return _tag.take_suggested(); }); $.log.toggle();