我正在玩jquery自动完成功能。我已将最小长度设置为3。
如果我输入字母“sci”,它将获得标题中包含字母“sci”的所有记录。这部分正常工作,因为所有带有字母“sci”的记录都会被返回并显示。
但是,如果说我继续打字(当然暂停后。此时我键入了“scisdfgdsfsd”),它仍然显示以前的选择。肯定没有标题使用字母“scisdfgdsfsd”。
有关如何解决此问题的任何想法?谢谢! :)
行动中“错误”的屏幕截图
工作:http://awesomescreenshot.com/0a2wuo2aa
无效:http://awesomescreenshot.com/023wuo507
我的jquery代码
$(function() {
$("#course").autocomplete({
minLength: 3,
source: function( request, response ) {
$("#commentsSection").hide();
$("#instanceIdSection").hide();
$.getJSON("/issu/GetCourses.html", {term: request.term}, function(data, status) {
if (data.length > 0) {
response(data);
} else {
getEventComments();
getEventSessions();
}
});
},
select: function (event, ui) {
alert("select");
getEventComments();
getEventSessions();
},
change: function (event, ui) {
alert("change");
getEventComments();
getEventSessions();
}
});
function getEventSessions(){
$.getJSON("/issu/GetEventSessions.html",{description: $("#course").val()}, function(data, status){
if (data.length != 0) {
$("#instanceId").empty();
$.each(data, function () {
$("#instanceId").append($('<option></option>').attr("value", $(this)[0]).text($(this)[1]));
});
$("#instanceIdSection").show();
}
});
}
function getEventComments() {
$.get("/issu/GetEventComments.html",{description: $("#course").val()}, function(data, status){
if (data.length != 0) {
$("#comments").text(data);
$("#commentsSection").show();
}
});
}
});
答案 0 :(得分:2)
只有在返回选项时,您提供给“source”选项的回调函数才会调用response()
。如果没有返回选项,您还应该调用response()
。这将导致自动完成器清除结果。
尝试:
$.getJSON("/issu/GetCourses.html", {term: request.term}, function(data, status) {
response(data);
if (data.length == 0) {
getEventComments();
getEventSessions();
}
});