diff options
Diffstat (limited to 'public/javascripts')
-rw-r--r-- | public/javascripts/application.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/public/javascripts/application.js b/public/javascripts/application.js index c9b7d943d..98360fe70 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -617,6 +617,46 @@ function observeAutocompleteField(fieldId, url, options) { }); } +function multipleAutocompleteField(fieldId, url, options) { + function split(val) { + return val.split(/,\s*/); + } + + function extractLast(term) { + return split(term).pop(); + } + + $(document).ready(function () { + $('#' + fieldId).autocomplete($.extend({ + source: function (request, response) { + $.getJSON(url, { + term: extractLast(request.term) + }, response); + }, + minLength: 2, + position: {collision: "flipfit"}, + search: function () { + $('#' + fieldId).addClass('ajax-loading'); + }, + response: function () { + $('#' + fieldId).removeClass('ajax-loading'); + }, + select: function (event, ui) { + var terms = split(this.value); + // remove the current input + terms.pop(); + // add the selected item + terms.push(ui.item.value); + // add placeholder to get the comma-and-space at the end + terms.push(""); + this.value = terms.join(", "); + return false; + } + }, options)); + $('#' + fieldId).addClass('autocomplete'); + }); +} + function observeSearchfield(fieldId, targetId, url) { $('#'+fieldId).each(function() { var $this = $(this); |