jquery ui自动完成打开事件未触发
我正在使用jQueryUI自动完成插件 一切都很好,但我想在最后添加一个框,说“查找更多结果” 我试图使用内置的jquery ui自动完成打开事件未触发,jquery,jquery-ui,jquery-ui-autocomplete,Jquery,Jquery Ui,Jquery Ui Autocomplete,我正在使用jQueryUI自动完成插件 一切都很好,但我想在最后添加一个框,说“查找更多结果” 我试图使用内置的open事件将框追加到已打开的中,但该事件从未触发(自动完成列表打开且功能齐全,唯一的问题是open事件从未触发。) 我的代码如下所示: $( "#q" ).autocomplete({ source: function(request, response) { var results = $.ui.autocom
open
事件将框追加到已打开的
中,但该事件从未触发(自动完成列表打开且功能齐全,唯一的问题是open事件从未触发。)
我的代码如下所示:
$( "#q" ).autocomplete({
source: function(request, response) {
var results = $.ui.autocomplete.filter(userFriends, request.term);
response(results.slice(0, 4));
},
minLength: 2,
appendTo: '.searchbox',
select: function (event, ui){
window.location.href = '/u/'+ ui.item.value;
return false;
},
focus: function (event, ui) {
return false;
},
open: function (event, ui){
console.log("AutoComplete Opened");
}
})
.data('autocomplete')._renderItem = function(ul, item) {
return $('<li>')
.data('item.autocomplete', item)
.append(
'<a>' +
'<div>' +
'<div><img src="' + item.img + '" alt="" width="50" onerror="onErrorFixProfileImage(this)"/></div>' +
'<div>' + item.label + '</div>' +
'</div>' +
'</a>'
)
.appendTo(ul);
};
$(“#q”).自动完成({
来源:功能(请求、响应){
var results=$.ui.autocomplete.filter(userFriends、request.term);
反应(结果切片(0,4));
},
最小长度:2,
附录:'.searchbox',
选择:功能(事件、用户界面){
window.location.href='/u/'+ui.item.value;
返回false;
},
焦点:功能(事件、用户界面){
返回false;
},
打开:功能(事件、用户界面){
console.log(“自动完成打开”);
}
})
.data('autocomplete')。\u renderItem=功能(ul,项目){
返回$(“”)
.data('item.autocomplete',item)
.附加(
'' +
'' +
'' +
''+项目.标签+''+
'' +
''
)
.附录(ul);
};
是否有人知道此事件不会触发的原因
谢谢 作为测试,您是否尝试过在插件初始化之外绑定事件?例如:
$( "#q" ).on( "autocompleteopen", function( event, ui ) {
console.log("AutoComplete Opened");
} );
编辑
您可以尝试在其他事件中防止默认值,而不是返回false:
select: function (event, ui){
window.location.href = '/u/'+ ui.item.value;
event.preventDefault();
},
focus: function (event, ui) {
event.preventDefault();
},
我已经测试了一个简化的自动完成添加您的
open
方法。它工作正常,并且消息在控制台中正确写入:
(function(){
var aTags = ['java', 'javascript', 'actionscript', 'typescript', 'jscript', 'vbscript'];
$('#tags').autocomplete({
delay: 50
, source:aTags
, select: function(event, data){
var $p = $('<p></p>').html(data.item.value).css({'display': 'inline-block', 'background-color': '#a0a0a0', 'color': '#ff0000'});
$(event.target).after($p);
}
, open: function (event, ui){
console.log("AutoComplete Opened");
}
});
})()
(函数(){
var aTags=['java','javascript','actionscript','typescript','jscript','vbscript'];
$(“#标记”)。自动完成({
延误:50
,资料来源:aTags
,选择:功能(事件、数据){
var$p=$('').html(data.item.value).css({'display':'inline block','background color':'a0a0a0','color':'ff0000');
$(event.target).after($p);
}
,打开:函数(事件,用户界面){
console.log(“自动完成打开”);
}
});
})()
.最新更新,
我安装了一个名为jquery.dimensions的插件,它导致jquery ui方法出现许多问题。
删除它解决了问题您是否尝试过在打开的事件中使用警报是的,我尝试过使用警报、日志和jquery。它就是不着火,对我来说它着火了是的,它在其他地方也对我有用。但在这种情况下,什么也没有发生。它可能与其他东西有关,我只是不知道该找什么…看这个,我用了你的代码的最低版本,刚刚试过。。。什么都没有发生,我甚至没有收到错误,只是没有回应。我知道需要帮助,我替换了我的回报,但仍然没有回应。我检查了所有其他事件,它们都正常工作。只有公开赛是死的。我想我在我的网站的其他地方有东西阻止它。也许你知道它可能是什么??现在我在控制台中遇到了以下错误:“未捕获的TypeError:无法读取未定义的”的属性“defaultView”是否相关?在jquery.js中:if(document.defaultView&&document.defaultView.getComputedStyle){getComputedStyle=function(elem,name){var ret,defaultView,computedStyle,width,style=elem.style;name=name.replace(rupper,“-$1”).toLowerCase();if((defaultView=elem.ownerDocument.defaultView)和未捕获类型错误:无法读取未定义(computedStyle=defaultView.getComputedStyle(elem,null))的属性“defaultView”){ret=computedStyle.getPropertyValue(name);谢谢,我知道它可以工作,但出于某种原因,我的不…你知道有什么可以覆盖它的吗?