我最近更新了 jquery ui 及其自动完成插件 - 但是在较新的版本中,它不会让我通过鼠标单击来选择选项,我必须使用向上和向下箭头。如何通过鼠标单击重新启用选择?
顺便说一句,新版本是 1.9.1,旧版本是 1.8.2
我最近更新了 jquery ui 及其自动完成插件 - 但是在较新的版本中,它不会让我通过鼠标单击来选择选项,我必须使用向上和向下箭头。如何通过鼠标单击重新启用选择?
顺便说一句,新版本是 1.9.1,旧版本是 1.8.2
在我的情况下,鼠标选择功能被过时的第三方 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.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;
}
问题是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 ...
}
})
它对我有用,我希望它对你有用!=)
最新版本已修复此问题。
只需从http://jqueryvalidation.org/更新到最新版本的 jquery.validate.js 。例如下载微软的Ajax CDN(欢迎盗链) http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.js