5

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

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

4

3 回答 3

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)。我一个接一个地禁用了一个插件,看看是哪个导致了不当行为。

于 2013-01-24T09:17:30.397 回答
1

我遇到了同样的问题,即使使用当时 1.11.4 可用的最新版本的 jquery-ui

检查文件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;
                        }

问题是mouseHandledvar 设置为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 ...
  }
})

它对我有用,我希望它对你有用!=)

于 2015-12-01T12:59:56.400 回答
0

最新版本已修复此问题。

只需从http://jqueryvalidation.org/更新到最新版本的 jquery.validate.js 。例如下载微软的Ajax CDN(欢迎盗链) http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.js

于 2014-11-26T21:36:57.833 回答