jQuery自动完成鼠标选项会触发模糊事件

Ran*_*lue 8 jquery jquery-ui jquery-ui-autocomplete

我使用jQuery UI .autocomplete(),我真的很喜欢.我确实有一个我无法解决的重大问题.

当我输入一个字母,比如s,并且下拉菜单中出现stackoverflow,我用鼠标选择stackoverflow,然后输入框暂时失去焦点,这会导致onblur事件被调用.

虽然从技术上讲,blur当我点击时输入框被编辑,这违背了可用性直觉.我该如何解决这个烦人的行为?

小智 18

您可以尝试使用jQuery UI自动完成的打开和关闭事件来控制文本框的模糊事件.打开自动填充功能后,您可以禁用模糊事件,当它关闭时,您可以再次启用模糊事件.我在jsfiddle.net上设置了一个工作示例.希望能帮助到你.

var disable=false;

$( "#tags" ).autocomplete({
  source: availableTags,
  open: function(event, ui) { disable=true },
  close: function(event, ui) {
    disable=false; $(this).focus();
  }
}).blur(function() {
  if(!disable) {
    alert('blur');
  }
});
Run Code Online (Sandbox Code Playgroud)