开发者

jQuery autocomplete multiple values

开发者 https://www.devze.com 2023-01-29 03:42 出处:网络
I\'m trying to impliment jqueryui\'s autocomplete for multiple values but am having trouble. Options pop up fine when I first begin typing a name, but once that name is selected, a comma is added to t

I'm trying to impliment jqueryui's autocomplete for multiple values but am having trouble. Options pop up fine when I first begin typing a name, but once that name is selected, a comma is added to the list and I no longer get options as I type. The code I have is below.

function fillAutoComplete(friends_list) {
  $('input#opponents').autocomplete({
    minLength:0,
    source: $.map(friendList, function(item) {
      return {
    label: item.name,
    value: item.name,
    id: item.id
      }
    }),
    focus: function() {return false},
    multiple: true,
    select: function(event, ui) {
      var terms = (this.value).split(/,\s*/);
      terms.pop();
      terms.pu开发者_运维百科sh(ui.item.value);
      terms.push("");
      this.value = terms.join(", ");
      var temp = $('input#oppID').val();
      if(temp != "") {
    $('input#oppID').val(temp + "," + ui.item.id);
      } else {
    $('input#oppID').val(ui.item.id);
      }
      return false; 
      }
    });
}

Thanks.


I had to do something very similar to this recently.

You need something like the following:

function fillAutoComplete(friends_list) {

$('input#opponents')
    .keydown(function(event) {
        var menuActive = $(this).data('autocomplete').menu.active;
        if (event.keyCode === $.ui.keyCode.TAB && menuActive)
            event.preventDefault();
    })
    .autocomplete({
        source: function(request, response) {
            // Apply filtering to list based on last term of input.
            var term = request.term.split(/[,;]\s*/).pop();
            if (!term) {
                response([]);
                return;
            }

            // Process list of friends.
            var list = $.map(friends_list, function(item) {
                return {
                    label: item.name,
                    value: item.name,
                    id: item.id
                }
            });

            // Apply filtering.
            list = $.grep(list, function(item) {
                return item.name.indexOf(term) === 0;
            });

            // Invoke jQuery callback.
            response(list);
        },
        focus: function() {
            var terms = this.value.split(/[,;]\s*/);
            terms.pop();
            terms.push( ui.item.value );
            this.value = terms.join(', ');
            return false;
        },
        select: function(event, ui) {
            var terms = this.value.split(/[,;]\s*/);
            terms.pop();
            terms.push(ui.item.value);
            terms.push('');
            this.value = terms.join(', ');
            return false;
        }
    });

}
0

精彩评论

暂无评论...
验证码 换一张
取 消