我拼凑了一个工作的自动完成原型,它将所选文本添加为范围,这很好用。我想做的是从其他地方调用此代码,所以我有这个:
$("#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
,我需要传递什么?
我正在尝试在输入按键上调用它,所以我正在尝试这个:
$("#searchBox").keydown(function (event) {
if (event.keyCode == 13) {
addSearchTerm(event, $("#searchBox"));
}
});
但我收到错误:
未捕获的TypeError:无法读取undefined`
的属性“value”
所以我显然传递了错误的数据类型。我以为$("#whatever")
引用了一个对象,但我想我错了。
任何想法或建议都会很棒,谢谢。
答案 0 :(得分:1)
尝试此操作以触发选择事件
$("#searchBox").keydown(function (event) {
if (event.keyCode == 13) {
$(this).data('ui-autocomplete')._trigger('select', 'autocompleteselect', {item:{value:$(this).val()}});
}
});