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

时间:2011-08-04 03:08:12

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

我使用jQuery UI .autocomplete(),我非常喜欢。我确实有一个我无法解决的主要问题。

当我输入一封信,说 s stackoverflow 出现在下拉菜单中,我用鼠标选择 stackoverflow ,然后输入框暂时失去焦点,这会导致调用onblur事件。

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

2 个答案:

答案 0 :(得分:17)

您可以尝试使用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');
  }
});

答案 1 :(得分:0)

你的模糊事件中有什么?这有点hacky但是你可以为你的模糊处理程序做一个相对较短的延迟的setTimeout。然后,您可以在自动完成的焦点事件处理程序中设置变量,并告诉您的模糊处理程序不会触发。