aboutsummaryrefslogtreecommitdiffstats
path: root/app/views/refinery/shared/admin/_autocomplete.html.erb
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/refinery/shared/admin/_autocomplete.html.erb')
-rw-r--r--app/views/refinery/shared/admin/_autocomplete.html.erb45
1 files changed, 45 insertions, 0 deletions
diff --git a/app/views/refinery/shared/admin/_autocomplete.html.erb b/app/views/refinery/shared/admin/_autocomplete.html.erb
index 97d4ac8..1131f89 100644
--- a/app/views/refinery/shared/admin/_autocomplete.html.erb
+++ b/app/views/refinery/shared/admin/_autocomplete.html.erb
@@ -1 +1,46 @@
<% content_for :stylesheets, stylesheet_link_tag("refinery/blog/ui-lightness/jquery-ui-1.8.13.custom") %>
+<% content_for :javascripts do %>
+<script>
+ function split(val) {
+ return val.split(/,\s*/);
+ }
+ function extractLast(term) {
+ return split(term).pop();
+ }
+ $(document).ready(function(){
+ $('<%= dom_id %>').bind("keydown", function(event) {
+ if (event.keyCode === $.ui.keyCode.TAB && $(this).data("autocomplete").menu.active) {
+ event.preventDefault()
+ }
+ }).autocomplete({
+ source: function(request, response) {
+ $.getJSON("<%= url %>", {
+ term: extractLast(request.term)
+ }, response);
+ },
+ search: function() {
+ // custom minLength
+ var term = extractLast(this.value);
+ if (term.length < 2) {
+ return false;
+ }
+ },
+ focus: function() {
+ // prevent value inserted on focus
+ return false;
+ },
+ 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;
+ }
+ });
+ })
+</script>
+<% end %>