diff options
Diffstat (limited to 'js/lib/autocomplete.js')
-rw-r--r-- | js/lib/autocomplete.js | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/js/lib/autocomplete.js b/js/lib/autocomplete.js index 917326d4f..748070eaa 100644 --- a/js/lib/autocomplete.js +++ b/js/lib/autocomplete.js @@ -5,18 +5,35 @@ elgg.provide('elgg.autocomplete'); elgg.autocomplete.init = function() { $('.elgg-input-autocomplete').autocomplete({ - source: elgg.autocomplete.url, //gets set by input/autocomplete + source: function( request, response ) { + $.ajax({ + url: elgg.autocomplete.url, //gets set by input/autocomplete + dataType: "json", + data: { + q: request.term + }, + success: function( data ) { + response( $.map( data, function( item ) { + item.value = item.name; + return item; + })); + } + }) + }, minLength: 1, select: function(event, ui) { var item = ui.item; - $(this).val(item.name); - - var hidden = $(this).next(); + item.value = item.name; + + if($(this).next().attr('type') == "hidden"){ + var hidden = $(this).next(); + } else { + var hidden = $(this).after('<input type="hidden" name="'+this.name+'[]" />').next(); + } hidden.val(item.guid); } }) - //@todo This seems convoluted .data("autocomplete")._renderItem = function(ul, item) { switch (item.type) { case 'user': @@ -31,9 +48,9 @@ elgg.autocomplete.init = function() { return $("<li/>") .data("item.autocomplete", item) - .append(r) + .append('<a>'+r+'</a>') .appendTo(ul); }; }; -elgg.register_hook_handler('init', 'system', elgg.autocomplete.init);
\ No newline at end of file +elgg.register_hook_handler('init', 'system', elgg.autocomplete.init); |