Jquery UI自动完成功能不允许再使用鼠标选择选项

时间:2012-11-14 13:09:56

标签: jquery jquery-ui jquery-ui-autocomplete

我最近更新了jquery ui及其自动完成插件 - 但是在较新的版本中,它不会让我通过鼠标点击选择选项,我必须使用向上和向下箭头。如何通过鼠标单击重新启用选择?

顺便说一下,新版本是1.9.1,旧版本是1.8.2

3 个答案:

答案 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