嗨我有下面的代码用于自动完成工作正常,但我唯一的问题是,当用户点击自动完成列表中的选项时,它应该触发另一个函数(doSomething())。然而,这还没有完成。如果用户进行选择并按"输入" ,则执行此功能。
var url = "http://myURL";
var field = "myField";
$(document).ready(function () {
$("#tags").autocomplete({
source: function (req, add) {
var suggestions = search(req.term, url, field);
add(suggestions);
},
select: function( event, ui ) {
doSomething();
}
});
});
function search(value, listurl, field) {
var coll = new Array();
var url =
listurl + "?$filter=startswith(" + field + ",'" + value + "')";
$.ajax({
cache: true,
type: "GET",
async: false,
dataType: "json",
url: url,
success: function (data) {
var results = data.d.results;
for (att in results) {
var object = results[att];
for (attt in object) {
if (attt == field) {
coll.push(object[attt]);
}
}
}
}
});
return coll;}
function doSomething() {
}
感谢您的任何建议。
答案 0 :(得分:3)
得到这样的解决方法:
$('#tags').on('keyup change', function () {
doSomething();
}).change();
$('#tags').on('autocompleteselect', function (e, ui) {
doSomething();
});
感谢SO link
答案 1 :(得分:3)
我知道这是一个老话题,但我遇到了这个问题,我发现了另一个我相信JQuery提供的解决方案。您可以使用close
事件执行此操作。
示例(摘自http://api.jqueryui.com/autocomplete/并适用于此问题):
1)初始化自动完成时
$( "#tags" ).autocomplete({
close: function( event, ui ) { doSomething(); }
});
或
2)将侦听器绑定到close事件
$( "#tags" ).on( "autocompleteclose", function( event, ui ) { doSomething(); } );