Javascript 检测输入元素的焦点丢失,而不是模糊

Javascript 检测输入元素的焦点丢失,而不是模糊,javascript,html,dart,dart-html,Javascript,Html,Dart,Dart Html,我正在dart中实现一个自动完成/组合框。我使用了两个元素,一个和一个作为建议。每当用户离开输入框时,我想通过css样式display:none隐藏。当在输入元素上使用onBlur时,此选项有效 如果用户试图单击中的项目,则在运行上的单击事件之前,输入会失去焦点且被隐藏 _listElement = new UListElement(); _textElement = new TextInputElement() ..onBlur((e) => setDisplayToNone(_li

我正在dart中实现一个自动完成/组合框。我使用了两个元素,一个
和一个
作为建议。每当用户离开输入框时,我想通过css样式
display:none
隐藏。当在输入元素上使用
onBlur
时,此选项有效

如果用户试图单击
中的项目,则在运行
  • 上的单击事件之前,输入会失去焦点且
    被隐藏

    _listElement = new UListElement();
    _textElement = new TextInputElement()
      ..onBlur((e) => setDisplayToNone(_listElement)); // hide element
    
    我注意到jQueryUI实现没有这个问题,我不知道它们如何检测何时隐藏建议框。看

    我可以使用什么替代方法隐藏
    ,而不将其隐藏在
    \u textElement.onBlur


    如果有帮助,这两个元素总是用
    包装。我正在寻找一个仅适用于dart的解决方案,尽管我也很感激可以在dart中重建的vanilla js答案。

    请查看事件序列:

  • 输入焦点
  • 李穆斯敦
  • input.blur
  • 李慕塞
  • 李,点击
  • 因此,您可以设置一个标志变量,将其打开
    li.mousedown
    ,在
    input.blur
    上检查它,决定是否需要隐藏列表,然后将其关闭
    li。单击