Javascript 当选择菜单关闭或隐藏(从视图中消失)时,需要触发事件。为了实现这一点,我可以抓住哪个事件?

Javascript 当选择菜单关闭或隐藏(从视图中消失)时,需要触发事件。为了实现这一点,我可以抓住哪个事件?,javascript,jquery,html,Javascript,Jquery,Html,问题: 我有下面的下拉选择菜单。我可以在更改或模糊时触发事件。但是我想在菜单关闭时立即启动一个事件,而不是其他任何事情。我怎么能抓住这个 当前实施 模糊可以工作,但直到我实际单击除“选择输入”字段之外的其他位置,事件才会触发。我需要它在选项菜单从视图中消失时启动 $select.onblur,functionevent{ 让id=$this.attrid; console.logid; //validate.validateInputthis; }; 选择一个省 阿尔伯塔省 不列颠哥伦比亚省

问题:

我有下面的下拉选择菜单。我可以在更改或模糊时触发事件。但是我想在菜单关闭时立即启动一个事件,而不是其他任何事情。我怎么能抓住这个

当前实施

模糊可以工作,但直到我实际单击除“选择输入”字段之外的其他位置,事件才会触发。我需要它在选项菜单从视图中消失时启动

$select.onblur,functionevent{ 让id=$this.attrid; console.logid; //validate.validateInputthis; }; 选择一个省 阿尔伯塔省 不列颠哥伦比亚省 马尼托巴省 新不伦瑞克省 纽芬兰和拉布拉多 西北地区 新斯科舍省 努纳武特 安大略 爱德华王子岛 魁北克省 萨斯喀彻温省 育空地区 更新:

$document.clickfunctionevent{ $target=$event.target; 如果$select.is:focus&&!$target.closest'select.length console.log单击外部; }; $select.onclick,functionevent{ console.logclick选项; } //$select.onmouseleave,=>console.logleft 选择一个省 阿尔伯塔省 不列颠哥伦比亚省 马尼托巴省 新不伦瑞克省 纽芬兰和拉布拉多 西北地区 新斯科舍省 努纳武特 安大略 爱德华王子岛 魁北克省 萨斯喀彻温省 育空地区 你可以试试这个

$(function(){
  var closed = false;
  $("select").on("blur", function(event) {
    if(!closed){
      doOnClose($(this));
    }
  });
  $("select").on("change", function(event) {
    if(!closed){
      doOnClose($(this));
    }
  });
  $("select").on("focus", function(event) {
    closed = false;
  });

  /* do what you need to on close the dropdown menu*/
  function doOnClose(e){
    let id = $(e).attr("id");
    console.log(id);
    closed = true;
  }
})

希望这能起作用

因为您使用的是jQuery,所以您可以使用库select2 它为你的案件提供了证据


如果这是沉重的只是看看代码如何工作

尝试使用change而不是blurchange在菜单关闭时不会触发,它仅在我选择某个内容时才会触发。很幸运,对于本机select元素的特定用例,您运气不佳@shan请看一看我的答案,希望它能起作用。如果没有选择任何内容,就不会触发,然后每次单击都会触发,无论是显示还是隐藏选项。好的,现在修复测试我很抱歉,你修复了什么?现在不显示任何日志
select2:closing     Triggered before the dropdown is closed. This event can be prevented.
select2:close   Triggered whenever the dropdown is closed. select2:closing is fired before this and can be prevented.