我最近更新了jquery ui及其自动完成插件 - 但是在较新的版本中,它不会让我通过鼠标点击选择选项,我必须使用向上和向下箭头。如何通过鼠标单击重新启用选择?
顺便说一下,新版本是1.9.1,旧版本是1.8.2
答案 0 :(得分:4)
在我的情况下,鼠标选择功能被过时的第三方jQuery插件禁用。这个帖子让我知道可能出现的问题:http://forum.jquery.com/topic/autocomplete-click-to-select-item-not-working-in-1-9-1
我使用旧版本的jquery验证插件(https://github.com/jzaefferer/jquery-validation)。我一个接一个地禁用了一个插件,看看哪个导致了不当行为。
答案 1 :(得分:1)
我有同样的问题,即使使用当时可用的最新版本的jquery-ui 1.11.4
检查文件 jquery-ui.js 中的源代码我找到了这样的文章:
"click .ui-menu-item": function( event ) {
var target = $( event.target );
if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
this.select( event );
// Only set the mouseHandled flag if the event will bubble, see #9469.
if ( !event.isPropagationStopped() ) {
this.mouseHandled = true;
}
问题是mouseHandled
var设置为true
。但只有在event
传播尚未停止时才会发生。
所以我在解决方案中定义了这样的自动完成:
$('.autocomplete').autocomplete({
source: ['value1','value2','value3','value4'], //my source
select: function(event, ui){
event.stopPropagation(); //the select event will work next time you click
//your logic comes here ...
}
})
它对我有用,我希望它适合你! =)
答案 2 :(得分:0)
最新版本已修复此问题。
只需从http://jqueryvalidation.org/更新到最新版本的jquery.validate.js即可。 例如下载微软的Ajax CDN(热链接欢迎) http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.js