问题说明了一切。我的jQuery自动完成功能是从我自己的API之一获取源代码的。如果找不到任何匹配项,则仅返回“未找到匹配项”,然后显示在下拉列表中。当用户专注于此时,框中的文本将更改为“未找到匹配项”。我想做的是在下拉列表中显示“找不到匹配项”,但使其无法对焦/无法选择。到目前为止,这是我的代码:
$(document).ready(function() {
$("input#id_address").autocomplete({
delay: 300,
minLength: 3,
source: function(request, response) {
$.getJSON("/pin/cache/", {q:encodeURI(request.term)}, function(results) {
res = results.results;
response($.map(res, function(item) {
return {
label: item.address,
value: item.address,
lat: parseFloat(item.lat),
lng: parseFloat(item.lng)
}
}));
});
},
select: function(event, ui) {
if (ui.item.value == 'no matches found') {
return;
}
else {
$("#id_address").val(ui.item.value);
var pos = new google.maps.LatLng(ui.item.lat, ui.item.lng);
map.setCenter(pos);
map.setZoom(14);
placeMarker(pos);
}
},
});
});
如您所见,我正在使用if else循环来检查select:function中的“找不到匹配项”,如果未选择找到匹配项,则不执行任何操作。但是,它仍会重点填充文本“找不到匹配项”。我希望在找到匹配项时填写焦点文本的默认功能,但是当没有找到匹配项时,下拉列表应该是无法聚焦的。有什么建议么 ?
最佳答案
一种可能的解决方案是在选择的focus()
处理程序上放置一个事件,该事件检查文本“未找到匹配项”,如果是,则立即将其模糊。
$("input#ip_address").focus(function(){
if($(this).text()=="no matches found") {
$(this).blur();
}
});
关于javascript - jQuery自动完成,如果未找到匹配项,则在下拉列表中显示 "no matches found",但不允许专注于此,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5915695/