1 |
/* |
2 |
tag auto-completer written with jquery |
3 |
|
4 |
2006-08-18 Dobrica Pavlinusic <dpavlin@rot13.org> |
5 |
*/ |
6 |
|
7 |
var _tag = { |
8 |
name: new Array(), |
9 |
obj: new Array(), |
10 |
selected_name: new Array(), |
11 |
selected_obj: new Array() |
12 |
}; |
13 |
|
14 |
$(document).ready( function() { |
15 |
|
16 |
$('.tag').each( function(i) { |
17 |
_tag.name[i] = this.firstChild.nodeValue; |
18 |
_tag.obj[i] = this; |
19 |
}); |
20 |
$.log.info( 'found ' + _tag.name.length + ' tags' ); |
21 |
|
22 |
$.log.info( 'hook onchange to #tags_form' ); |
23 |
$('#tags_form').change( function() { |
24 |
$.log.debug('submit #tags_form'); |
25 |
//this.submit(); |
26 |
return false; |
27 |
}).keyup( function() { |
28 |
var t = $('#tags').val().replace(/^([^ ][^ ]* )*/, ''); |
29 |
|
30 |
if (! t ) return; |
31 |
|
32 |
$.log.debug('tag: ' + t); |
33 |
|
34 |
for(var i = 0; i < _tag.selected_obj.length; i++) { |
35 |
jQuery.className.remove( _tag.selected_obj[i], 'selected' ); |
36 |
} |
37 |
|
38 |
_tag.selected_name = Array(); |
39 |
_tag.selected_obj = Array(); |
40 |
var j = 0; |
41 |
|
42 |
if (t == '') return; |
43 |
|
44 |
for(var i = 0; i < _tag.name.length; i++) { |
45 |
if ( _tag.name[i].substr(0, t.length) == t ) { |
46 |
var t = _tag.name[i]; |
47 |
$.log.debug('selected ' + t ); |
48 |
|
49 |
jQuery.className.add( _tag.obj[i], 'selected' ); |
50 |
|
51 |
_tag.selected_obj[j] = _tag.obj[i]; |
52 |
_tag.selected_name[j] = _tag.name[i]; |
53 |
j++; |
54 |
} |
55 |
} |
56 |
|
57 |
$.log.debug('selected ' + _tag.selected_obj.length + ' tags'); |
58 |
|
59 |
$('#suggest').html( _tag.selected_name.join(" ") ); |
60 |
}).focus(); |
61 |
|
62 |
$.log.toggle(); |
63 |
|
64 |
}); |
65 |
|