Jquery ui 如果鼠标指向结果列表,jquery ui自动完成会自动选择结果项

Jquery ui 如果鼠标指向结果列表,jquery ui自动完成会自动选择结果项,jquery-ui,autocomplete,jquery-ui-autocomplete,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,我有以下代码从外部源获取数据并显示自动完成列表: function addSearchFieldFunctionality() { //Clears the value "Search for Products" from the searchfield when clicked and added it back when blured $(".searchfield").focus(function(){ if($(this).attr("value") !=

我有以下代码从外部源获取数据并显示自动完成列表:

function addSearchFieldFunctionality() {

//Clears the value "Search for Products" from the searchfield when clicked and added it back when blured        
$(".searchfield").focus(function(){  
    if($(this).attr("value") != "") $(this).attr("value", "");
}); 


$(".searchfield").autocomplete({
minLength: 1,
source:  "{{ path('SolrSearchBundle_search') }}",
focus: function( event, ui ) {
   $(this).val(ui.item.label);
        return false;
    },
select: function( event, ui ) {
   $(this).val(ui.item.label);
   window.location = "{{ path('CoreBundle_show_product', {'productId': ''}) }}"+"/" + ui.item.value
   return false;
},

open: function(){
    var $searchFieldId = $(this).attr('id');
    //console.log(this);
    $(".ui-autocomplete").append('<li class="ui-menu-item"><span class="notFound"><a class="notFoundItem ' + $searchFieldId + '" href="#">Miss your Product? We\'ll find it</a></span></li>');

}



}).data( "autocomplete" )._renderItem = function( ul, item ) {

var a = $('<a>', {
    href: "{{ path('CoreBundle_show_product', {'productId': ''}) }}"+"/" + item.value,
    text: item.label,
    "class" : "mySearchClass" 
});

var b = $('<a>', {
    href: "{{ path('CoreBundle_add_product', {'productId': ''}) }}"+"/"+item.value,
    text: "Add", style: "float:right"});
      //return $li.add(a).add(b).appendTo(ul);
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( a )
.appendTo( ul );
};


}
我有以下问题:如果我把鼠标直接放在搜索字段下面,比如说总是放在生成的结果列表的第四个位置上,焦点事件总是被自动调用,并将“item.label”设置为输入搜索字段。例如,我上传了一张图片

我输入了搜索词“try”,ul弹出,我的鼠标直接聚焦第四个结果,即“try”。结果是,“try”现在显示在我的搜索字段中。如果我要在最后一个结果中另外输入“try”一个新词,并且不移动鼠标位置(仅使用键盘上的删除按钮),例如“try-try”,ul会弹出新结果,但鼠标会自动聚焦结果列表的第四个位置,即“try”。这一聚焦结果“覆盖”了我以前的搜索词“尝试”。如果我不将鼠标指针移出生成结果的区域,我就无法避免在结果项上“自动聚焦”的行为

在jQueryUI的示例页面上:这很有效。如果生成了新的结果项,则结果项上的“焦点”处于非活动状态

有人知道这里出了什么问题吗? 非常感谢。 拉莫

编辑: 您好,我现在直接学习了jQuery示例,并做了一个JSFIDLE:
如果您将鼠标放置在搜索输入字段下方两厘米处,并开始键入“s”,则应预选选择“Sizzle JS 2”。如果您现在开始缓慢点击后退(删除)按钮,每秒1次,例如,搜索输入字段中的值始终会更新并聚焦。这是默认行为吗?这只会发生,如果鼠标抵制“进入”结果列表(例如,搜索输入字段下方两厘米)

我很困惑,焦点事件处理程序中的特定代码正是您所抱怨的。尝试删除:

focus: function( event, ui ) {
   $(this).val(ui.item.label);
        return false;
    },

您好,当使用我的键盘进行导航(例如向下箭头键)时,会出现移除焦点事件的问题。按下向下箭头键可以让我专注于每个元素。问题是,在搜索字段中,我没有得到所选项目的文本,而是项目的id。因此,[{“label”:“Try”,“value”:“816747”,“thumb”:“http:mydomain/myimages/1.jpg”},…如果我通过键盘导航选择id“816747”,那么,[{“label”:“Try”,“value”:“816747”,“thumb”:“http:mydomain/myimages/1.jpg”},…更多结果…]将在结果列表中添加id“816747”。即使我删除了焦点事件,当结果列表重新加载时,焦点(灰色背景)将消失在jquery UI自动完成示例页面中。如果移动鼠标或与键盘交互,则会再次设置焦点
focus: function( event, ui ) {
   $(this).val(ui.item.label);
        return false;
    },