1 |
dpavlin |
41 |
/* |
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 |
|
|
|