我用户jquery autocomplete
获取一些结果并显示结果,但是当我点击侧面时无法关闭带有返回结果的下拉列表。
$(function () {
$("#search").autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("TestAutoComplete", "Home")', type: "POST", dataType: "json",
data: { query: request.term },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.Title
};
}));
}
});
},
minLength: 1,
select: function (event, ui) {
onItemSelect(ui.item);
},
open: function () {
$(this).removeClass('ui-corner-all').addClass('ui-corner-top');
$(this).autocomplete('widget').css('z-index', 999999);
},
close: function () {
$(this).removeClass('ui-corner-top').addClass('ui-corner-all');
}
})
.data('ui-autocomplete')._renderItem = function (ul, item) {
return $('<li>')
.data('autocomplete-item', item)
.append('<a href="#"><p >' + item.label + "</p></a>")
.appendTo(ul);
};
});
答案 0 :(得分:1)
非常愚蠢的错误。
$("#search").autocomplete({...
应该是
$(".search").autocomplete({...
它有效。
答案 1 :(得分:0)
仅仅通过查看你的js,我的标记并不完全清楚,但它会是这样的:
$("html").on("click.autocomplete", function(e){
var $targ = $(e.target || event.srcElement);
if ( !$targ.is( /* searchlist */ ) || !$( /* searchlist */ ).has( $targ ).length ) {
//Close autocomplete
$("html").off(".autocomplete");
}
});
答案 2 :(得分:0)
你以某种方式让我们对你的实现视而不见,但假设一个好的模式,解决方案就是,如果点击的元素(e.target)在文档上的每次点击都检测到,在搜索内部关闭搜索框。
$(document).on('click', function(e)
{
var jqTarget = $(e.target);
if ( !jqTarget.closest('#search').length )
{
$("#search").hide();
}
});
答案 3 :(得分:0)
var that = $('.autocomplete'); //Define this somewhere in the page to refer later
$('document').on('mousedown', function(e){
if ($(e.target).closest('.autocomplete:not(:visible)').length != 0) {
that.hide();
}
});