Jquery自动完成对象传递

时间:2018-06-09 17:05:17

标签: javascript jquery

我拼凑了一个工作的自动完成原型,它将所选文本添加为​​范围,这很好用。我想做的是从其他地方调用此代码,所以我有这个:

$("#searchBox").autocomplete({
  var testSourceData = ["First thing", "Second thing", "Third thing"];

  source: testSourceData,

  select: function(e, ui) {
    //create formatted searchTerm
    addSearchTerm(e, ui);
    $(this).val('');
    return false;
  },
  ...
});

function addSearchTerm(e, ui) {
  var searchTerm = ui.item.value;
  var span = $("<span>").text(searchTerm);
  var a = $("<a>").addClass("remove").attr({
    href: "javascript:",
    title: "Remove " + searchTerm
  }).text("x").appendTo(span);

  //add searchTerm to searchBox
  span.insertBefore("#searchBox");

}

我的问题是这个; eui个对象,它们从何处传递?如果我想从其他地方拨打addSearchTerm,我需要传递什么?

我正在尝试在输入按键上调用它,所以我正在尝试这个:

$("#searchBox").keydown(function (event) {
  if (event.keyCode == 13) {
    addSearchTerm(event, $("#searchBox"));
  }
});

但我收到错误:

  

未捕获的TypeError:无法读取undefined`

的属性“value”

所以我显然传递了错误的数据类型。我以为$("#whatever")引用了一个对象,但我想我错了。

任何想法或建议都会很棒,谢谢。

1 个答案:

答案 0 :(得分:1)

尝试此操作以触发选择事件

$("#searchBox").keydown(function (event) {
  if (event.keyCode == 13) {
   $(this).data('ui-autocomplete')._trigger('select', 'autocompleteselect', {item:{value:$(this).val()}});
  }
});