jqueryui autocomplete 保持打开状态,但在单击外部时关闭
jqueryui autocomplete keep open but close when outside is clicked
我正在使用 jquery-ui 自动完成。
我希望自动完成搜索的结果列表保持打开状态
并在 'autocomplete text input area'&'search result list'.
以外的区域关闭
我引用了 keep ui autocomplete open at all times。
现在一直开着。
但无法找到如何在单击外部区域时关闭它。
http://jsfiddle.net/9r3avhoe/6/
$("input").autocomplete({
source: ["Apple", "Boy", "Cat"],
minLength: 0,
response: function(event, ui) {
//console.log(ui);
},
select: function(event, ui) {
addObject(ui.item.value);
return false;
},
focus: function(event, ui) {
return false;
},
close: function(event, ui) {
if (!$("ul.ui-autocomplete").is(":visible")) {
$("ul.ui-autocomplete").show();
$( "#search" ).focus();
}
}
});
您可以使用 focusout 并只触发小部件事件。
$("input").focusout(function(event) {
$("ul.ui-autocomplete").hide();
})
$("input").autocomplete({
source: ["Apple", "Boy", "Cat"],
minLength: 0,
response: function(event, ui) {
//console.log(ui);
},
select: function(event, ui) {
addObject(ui.item.value);
return false;
},
focus: function(event, ui) {
console.log("focused");
return true;
},
close: function(event, ui) {
if (!$("ul.ui-autocomplete").is(":visible")) {
$("ul.ui-autocomplete").show();
$( "#search" ).focus();
}
}
});
$( "input").blur(function() {
$("ul.ui-autocomplete").hide();
});
function addObject(id){
var div = $('<p>'+id+'</p>').attr({"value":id});
div.appendTo("#selected_obj");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script
src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
crossorigin="anonymous"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet"/>
<input type="text" />
<br/>
<br/>
<div id="selected_obj" style="border:solid 1px black;float:right">
</div>
添加模糊事件然后隐藏弹出窗口。希望对您有所帮助。
我正在使用 jquery-ui 自动完成。
我希望自动完成搜索的结果列表保持打开状态 并在 'autocomplete text input area'&'search result list'.
以外的区域关闭我引用了 keep ui autocomplete open at all times。
现在一直开着。 但无法找到如何在单击外部区域时关闭它。
http://jsfiddle.net/9r3avhoe/6/
$("input").autocomplete({
source: ["Apple", "Boy", "Cat"],
minLength: 0,
response: function(event, ui) {
//console.log(ui);
},
select: function(event, ui) {
addObject(ui.item.value);
return false;
},
focus: function(event, ui) {
return false;
},
close: function(event, ui) {
if (!$("ul.ui-autocomplete").is(":visible")) {
$("ul.ui-autocomplete").show();
$( "#search" ).focus();
}
}
});
您可以使用 focusout 并只触发小部件事件。
$("input").focusout(function(event) {
$("ul.ui-autocomplete").hide();
})
$("input").autocomplete({
source: ["Apple", "Boy", "Cat"],
minLength: 0,
response: function(event, ui) {
//console.log(ui);
},
select: function(event, ui) {
addObject(ui.item.value);
return false;
},
focus: function(event, ui) {
console.log("focused");
return true;
},
close: function(event, ui) {
if (!$("ul.ui-autocomplete").is(":visible")) {
$("ul.ui-autocomplete").show();
$( "#search" ).focus();
}
}
});
$( "input").blur(function() {
$("ul.ui-autocomplete").hide();
});
function addObject(id){
var div = $('<p>'+id+'</p>').attr({"value":id});
div.appendTo("#selected_obj");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script
src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
crossorigin="anonymous"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet"/>
<input type="text" />
<br/>
<br/>
<div id="selected_obj" style="border:solid 1px black;float:right">
</div>
添加模糊事件然后隐藏弹出窗口。希望对您有所帮助。