Php 如何使jQuery自动完成列表在选择选项后显示焦点上的所有选项和隐藏?
我有一个带有自动完成功能的表单,它启动搜索“onfocus”,并在用户单击搜索字段时显示选项列表,即使他们没有输入任何内容 问题在于,自动完成需要使用键盘(向下箭头后跟tab/return或双击)选择选项。我的第一个想法是,单击一次会使焦点保持在搜索字段中,从而使自动完成保持可见。但是,搜索字段在第二次单击后保持聚焦,但自动完成在第二次单击后消失 有什么想法吗Php 如何使jQuery自动完成列表在选择选项后显示焦点上的所有选项和隐藏?,php,jquery,jquery-ui,jquery-ui-autocomplete,onfocus,Php,Jquery,Jquery Ui,Jquery Ui Autocomplete,Onfocus,我有一个带有自动完成功能的表单,它启动搜索“onfocus”,并在用户单击搜索字段时显示选项列表,即使他们没有输入任何内容 问题在于,自动完成需要使用键盘(向下箭头后跟tab/return或双击)选择选项。我的第一个想法是,单击一次会使焦点保持在搜索字段中,从而使自动完成保持可见。但是,搜索字段在第二次单击后保持聚焦,但自动完成在第二次单击后消失 有什么想法吗 <script> $(document).ready(function() { var autocomplete_
<script>
$(document).ready(function() {
var autocomplete_focus = function(){
if ($(this).val().length == 0) {
$(this).autocomplete("search", "%");
}
}
$( ".autocomplete" ).autocomplete({
source: "../../db/autocomplete_list.php",
minLength: 0
});
$( ".autocomplete" ).focus(autocomplete_focus);
});
</script>
$(文档).ready(函数(){
var autocomplete_focus=function(){
if($(this).val().length==0){
$(this).autocomplete(“search”、“%”);
}
}
$(“.autocomplete”).autocomplete({
来源:“../db/autocomplete_list.php”,
最小长度:0
});
$(“.autocomplete”).focus(autocomplete\u focus);
});
我知道以前有人在这里发过帖子;但是,建议的解决方案不适用于我。此方法:
$( ".autocomplete" ).autocomplete({
source: "../../db/autocomplete_list.php",
minLength: 0
}).focus(function(){
$(this).trigger('keydown.autocomplete');
});
对我有用
资料来源:
不确定这是否是一个可接受的解决方案,但一种方法是用聚焦值填充
输入。这将防止菜单显示两次:
/* snip: */
focus: function (event, ui) {
this.value = ui.item.value;
},
这里有一个例子:
尝试删除事件处理程序的焦点,以查看问题中的症状。尝试此操作。
这段代码实际上删除了存在问题的keydown.autocomplete。相反,每次您关注文本字段时,它都会进行搜索
$( ".autocomplete" ).autocomplete({
source: "../../db/autocomplete_list.php",
minLength: 0
}).focus(function(){
$(this).data("autocomplete").search($(this).val());
}
但是,如果您希望在选择条目后立即取消下拉列表,请添加此行
$( ".autocomplete" ).autocomplete({
source: "../../db/autocomplete_list.php",
minLength: 0
}).focus(function(){
**if ($(this).autocomplete("widget").is(":visible"))
return;**
$(this).data("autocomplete").search($(this).val());
}
当控件在鼠标单击的情况下接收回焦点时,如果下拉列表已经显示,它不会显示全部焦点。这就是这段代码的作用这是我找到的最好的解决方案;但是,这仅显示“第一”焦点上的所有值。当我在页面加载后关注搜索字段时,它会显示所有的值。但是,如果我单击关闭搜索字段(移除焦点),然后再次单击返回,它不会再次拉出完整列表。你看到问题了吗?是的,这似乎有效;然而,由于某种原因,这个问题似乎只发生在远程源上。啊,好的。我会再挖一些。谢谢!见下面Alex的回答。这也是我最接近的一次;然而,这并不完美!漂亮的解决方案……你是最好的!:)谢谢@迈克尔:没问题!很乐意帮忙。这实际上应该在小部件本身中修复。