Javascript 使用jquery textcomplete而不自动选择第一个选项

Javascript 使用jquery textcomplete而不自动选择第一个选项,javascript,jquery,Javascript,Jquery,我正在文本字段上使用。一切都很好,但我想模仿Twitter如何为搜索提供自动完成功能,以及何时开始键入“@”。在Twitter上,当您执行搜索时,会出现一个下拉列表,并且不会选择任何项目,除非用户按下键盘上的“向下”键或用鼠标单击以进行选择。如果没有选择,您按“回车”键,则Twitter会将您带到搜索结果页面,或者如果您正在撰写推文并按“回车”键,则会添加新行 现在我的代码工作得很好,但是jquery textcomplete在加载下拉菜单时会自动将活动类添加到第一个选项中。如果用户按“ente

我正在文本字段上使用。一切都很好,但我想模仿Twitter如何为搜索提供自动完成功能,以及何时开始键入“@”。在Twitter上,当您执行搜索时,会出现一个下拉列表,并且不会选择任何项目,除非用户按下键盘上的“向下”键或用鼠标单击以进行选择。如果没有选择,您按“回车”键,则Twitter会将您带到搜索结果页面,或者如果您正在撰写推文并按“回车”键,则会添加新行

现在我的代码工作得很好,但是jquery textcomplete在加载下拉菜单时会自动将活动类添加到第一个选项中。如果用户按“enter”键而不进行选择,则假定您想要第一个选择并执行me.loadPage(值);功能

这是我的密码:

$('.elastic_search').textcomplete([{ // mention strategy
  match: /(^|\s)(\w+ ?\w+ ?\w+)$/i,
  search: function(term, callback) {
    //me.options.skip = 0;
    //me.options.state = "firstview";

    $.getJSON('/elastic/search', {
      q: term,
      //user_id: userObj.user_id,
      //skip: me.options.skip
      limit: 10,

    }).done(function(resp) {
      callback(resp);
    }).fail(function() {
      callback([]);
    });
  },
  css: function() {
    return {
      'background-color': 'green'
    };
  },
  replace: function(value) {
    return '$1' + $.trim(value._source.username);
  },
  template: function(value) {
    value._source.profilepic = makeImageSize(value._source.profilepic, '35x35');
    if (value._source && value._source.link_type === 'hashcode') {
      return '<div data-type="hashcode">#' + value._source.text + '</div>';
    } else if (value._source.type === 'code') {
      return '<div data-type="entity"><div class="col-xs-2"><img src="' + value._source.profilepic + '" /></div><div class="col-xs-9 resultname">' + (('<b>' + value._source.fullname + '</b>' || ' ') + ' We#' + value._source.wecode) + '</div></div>';
    } else if (value._source) {
      return '<div data-type="entity"><div class="col-xs-2"><img src="' + value._source.profilepic + '" /></div><div class="col-xs-9 resultname">' + ((value.highlight.fullname || ' ') + ' @' + value._source.username) + '</div></div>';
    }
  }
}, { // mention strategy
  match: /(^|\s)we#(\w*)$/i,
  search: function(term, callback) {
    //me.options.skip = 0;
    //me.options.state = "firstview";
    $.getJSON('/elastic/search', {
      q: term,
      fields: ['wecode^4'],
      wecode_complete: "yes",
      //user_id: userObj.user_id,
      //skip: me.options.skip
      limit: 10
    }).done(function(resp) {

      callback(resp);
    }).fail(function() {

      callback([]);
    });
  },
  css: function() {
    return {
      'background-color': 'green'
    };
  },
  replace: function(value) {
    return '$1' + $.trim(value._source.username);
  },
  template: function(value) {
    value._source.profilepic = makeImageSize(value._source.profilepic, '35x35');
    if (value._source && value._source.link_type === 'hashcode') {
      return '<div data-type="hashcode">#' + value._source.text + '</div>';
    } else if (value._source.type === 'code') {
      return '<div data-type="entity"><div class="col-xs-2"><img src="' + value._source.profilepic + '" /></div><div class="col-xs-9 resultname">' + (('<b>' + value._source.fullname + '</b>' || ' ') + ' We#' + value._source.wecode) + '</div></div>';
    } else if (value._source) {
      return '<div data-type="entity"><div class="col-xs-2"><img src="' + value._source.profilepic + '" /></div><div class="col-xs-9 resultname">' + (('<b>' + value._source.fullname + '</b>' || ' ') + ' @' + value._source.username) + '</div></div>';
    }
  }
}], {
  appendTo: $('.search-container'),
  className: 'dropdown-absolute',
  zIndex: '100001',
  placement: 'absleft'
}).on({
  'textComplete:select': function(e, value, strategy) {
    //me.options.hashtags.push(value);
    //This Discover Cards Need to be formatted.
    me.loadPage(value);
  }
我的问题是,如何防止第一选择被选中

 render: function (zippedData) {
  var contentsHtml = this._buildContents(zippedData);
  var unzippedData = $.map(this.data, function (d) { return d.value; });
  if (this.data.length) {
    this._renderHeader(unzippedData);
    this._renderFooter(unzippedData);
    if (contentsHtml) {
      this._renderContents(contentsHtml);
      // this._activateIndexedItem();  // comment this kind of works
    }
    this._setScroll();
  } else if (this.shown) {
    this.deactivate();
  }
}