javascript - 当选择菜单关闭或隐藏(从 View 中消失)时需要触发事件。我可以捕获哪个事件来完成此任务?

标签 javascript jquery html

问题:

我有以下下拉选择菜单。我可以触发 onChange 或 onBlur 事件。但我希望能够在菜单关闭时立即触发一个事件,而不是为了其他任何事情。我怎样才能捕获这一点?

当前实现

模糊有效,但直到我实际单击选择输入字段以外的其他位置时,该事件才会触发。我需要它在选项菜单从 View 中消失时触发

$("select").on("blur", function(event) {
  let id = $(this).attr("id");
  console.log(id);
  //validate.validateInput(this);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="form-control" id="patient_registration-patient-province">
  <option class="trn" disabled="" selected="" value="" data-trn-key="select a province">select a province</option>
  <option value="Alberta">Alberta</option>
  <option value="British Columbia">British Columbia</option>
  <option value="Manitoba">Manitoba</option>
  <option value="New Brunswick">New Brunswick</option>
  <option value="Newfoundland">Newfoundland and Labrador</option>
  <option value="Northwest Territories">Northwest Territories</option>
  <option value="Nova Scotia">Nova Scotia</option>
  <option value="Nunavut">Nunavut</option>
  <option value="Ontario">Ontario</option>
  <option value="Prince Edward Island">Prince Edward Island</option>
  <option value="Quebec">Quebec</option>
  <option value="Saskatchewan">Saskatchewan</option>
  <option value="Yukon">Yukon</option>
</select>

最佳答案

更新:

$(document).click(function(event) {
  $target = $(event.target);
  
  if($("select").is(":focus") && !$target.closest('#select').length)
    console.log("click outside");
});

$("select").on("click", function(event) {
  console.log("click option");
})

//$("select").on("mouseleave", () => console.log("left"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="select" class="form-control" id="patient_registration-patient-province">
  <option class="trn" disabled="" selected="" value="" data-trn-key="select a province">select a province</option>
  <option value="Alberta">Alberta</option>
  <option value="British Columbia">British Columbia</option>
  <option value="Manitoba">Manitoba</option>
  <option value="New Brunswick">New Brunswick</option>
  <option value="Newfoundland">Newfoundland and Labrador</option>
  <option value="Northwest Territories">Northwest Territories</option>
  <option value="Nova Scotia">Nova Scotia</option>
  <option value="Nunavut">Nunavut</option>
  <option value="Ontario">Ontario</option>
  <option value="Prince Edward Island">Prince Edward Island</option>
  <option value="Quebec">Quebec</option>
  <option value="Saskatchewan">Saskatchewan</option>
  <option value="Yukon">Yukon</option>
</select>

关于javascript - 当选择菜单关闭或隐藏(从 View 中消失)时需要触发事件。我可以捕获哪个事件来完成此任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60802154/

相关文章:

javascript - jQuery 的 val() 不适用于隐藏字段

javascript - 可折叠在控制组内

javascript - jquery悬停下拉菜单

javascript - 选择列表显示键而不是值

javascript - 无法读取未定义的 highcharts highstock 的属性 'type'

javascript - 打破nodejs中的循环

javascript - 为什么 Math.pow 比缓存的 Math.pow 更快 (var pow = Math.pow)

html - 如何在 Bootstrap block 之间设置更多空间?

html - 缩小选择的宽度,多个框

javascript - 如何结合滚动效果和鼠标移动