【问题标题】:Implement Jquery autocomplete with multiple values and images使用多个值和图像实现 Jquery 自动完成
【发布时间】:2015-11-04 04:35:54
【问题描述】:

我是 jQuery 新手,在尝试实现返回图像(由堆栈成员制作)但可以选择各种值(多个值)的自动完成时遇到问题。但是在我的代码中,用户只能选择一个值。

这是 jsfiddle:

http://jsfiddle.net/Igaojsfiddle/85SAF/

$(function() {
function split( val ) {
  return val.split( /,\s*/ );
}
function extractLast( term ) {
  return split( term ).pop();
}

$( "#tags" )
  // don't navigate away from the field on tab when selecting an item
  .bind( "keydown", function( event ) {
    if ( event.keyCode === $.ui.keyCode.TAB &&
        $( this ).data( "ui-autocomplete" ).menu.active ) {
      event.preventDefault();
    }
  })
  .autocomplete({
    minLength: 0,
     source: function (request, response) {
        $.ajax({
            url: "http://api.stackoverflow.com/1.1/users",
            data: {
                filter: request.term,
                pagesize: 10
            },
            jsonp: "jsonp",
            dataType: "jsonp",
            success: function(data) {
                response($.map(data.users, function(el, index) {
                    return {
                        value: el.display_name,
                        avatar: "http://www.gravatar.com/avatar/" +
                            el.email_hash
                    };
                }));
            }
        });
    },
    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;
    }
  }).data("autocomplete")._renderItem = function (ul, item) {
    return $("<li />")
        .data("item.autocomplete", item)
        .append("<a><img src='" + item.avatar + "' />" + item.value + "</a>")
        .appendTo(ul);
};

});

【问题讨论】:

    标签: jquery image autocomplete jquery-autocomplete multipleselection


    【解决方案1】:

    问题是您将文本框中的完整文本作为过滤器(例如“Name1,a”)发送,而不仅仅是逗号后面的部分(例如“a”)。您正在正确地发出请求(可以通过查看您选择的浏览器的开发人员工具栏中的“网络”选项卡看到),但您没有发送正确的数据作为查询的一部分。似乎您从http://jqueryui.com/autocomplete/#multiple 的代码副本开始,但您没有使用 extractLast 方法。如果您将 json 调用的 data 部分从

    data: {
        filter: request.term,
        pagesize: 10
    },
    

    data: {
        filter: extractLast(request.term),
        pagesize: 10
    },
    

    它应该工作。我已经用这个更新了你的 jsfiddle (http://jsfiddle.net/85SAF/10/),它似乎工作正常。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多