在模糊时隐藏自动完成 AJAX 控件的建议列表

Fra*_*asi 5 ajax autocomplete onblur

我正在实现一个 AJAX“自动建议”框:用户在输入文本字段中键入一个字符串,显示一个带有表格的隐藏 div,然后他/她可以单击一行或使用向上/向下箭头滚动列表; 同时,焦点仍然保持在输入文本字段上。

一切正常,但有一个细节我无法实现,这在概念上似乎很困难甚至不可能。当用户将光标移动到另一个输入字段时,我想隐藏建议列表,或者只是点击窗口的空白点。这本身并不难实现,我只是添加了一个回调OnBlur;但这打破了OnClick项目的选择,因为 onblur 事件在点击之前触发,然后 DIV 在 onclick 事件被触发之前消失......

我想过在整个窗口上实现一个onclick回调,然后检查点击发生的地方,但这似乎有点太尴尬和扭曲了。有人有更好的主意吗?谢谢!

Nat*_*ppi 0

我目前正在尝试解决同样的问题。

部分解决方案:

使用函数在清除自动建议 DIV 之前等待一小会儿

function pause(milliseconds) {
        var dt = new Date();
        while ((new Date()) - dt <= milliseconds) {  }
}

onBlur="pause(500);clearAutosuggestBox()"
Run Code Online (Sandbox Code Playgroud)

然而,这个解决方案并不优雅,并且不能在所有浏览器中工作。

在查看一些流行的自动建议框时,我还没有遇到一个当您单击外部时使自动建议信息消失的框,而是它们通常会超时并消失。

祝你好运。