我已经拼凑了一个可以工作的自动补全原型,它可以将选定的文本作为跨度添加,这很好用。我想做的是从其他地方调用这段代码,所以我有这样的代码:
$("#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");
}
我的问题是:e
和ui
对象是从哪里传递的?如果我想从其他地方调用addSearchTerm
,我需要传递什么?
我目前正在尝试在enter键上调用它,所以我尝试这样做:
$("#searchBox").keydown(function (event) {
if (event.keyCode == 13) {
addSearchTerm(event, $("#searchBox"));
}
});
但是我得到了一个错误:
未捕获值:无法读取未定义`的属性‘TypeError’
所以很明显,我传递给它的数据类型是错误的。我以为$("#whatever")
引用了一个对象,但我想我错了。
任何想法或建议都会很棒,谢谢。
发布于 2018-06-10 01:33:05
尝试此操作以触发select事件
$("#searchBox").keydown(function (event) {
if (event.keyCode == 13) {
$(this).data('ui-autocomplete')._trigger('select', 'autocompleteselect', {item:{value:$(this).val()}});
}
});
https://stackoverflow.com/questions/50776643
复制相似问题