Javascript 打开下拉列表时如何触发事件?

Javascript 打开下拉列表时如何触发事件?,javascript,jquery,html,Javascript,Jquery,Html,当我们打开下拉列表时,我想触发一个事件来刷新下拉列表的所有选项。并确保在关闭下拉列表或选择其中的任何选项时不会触发该事件 我使用下面的html代码作为下拉列表 <select id="SelectedNic" class="dropdown" name="SelectedNic" type="text"> <option value="">Select</option> <option value="A">B</option&

当我们打开下拉列表时,我想触发一个事件来刷新下拉列表的所有选项。并确保在关闭下拉列表或选择其中的任何选项时不会触发该事件

我使用下面的html代码作为下拉列表

<select id="SelectedNic" class="dropdown" name="SelectedNic" type="text">
    <option value="">Select</option>
    <option value="A">B</option>
    <option value=C">D</option>
 </select>

挑选
B
使用
.on(“焦点”,回调)
执行此操作。只有当您的下拉菜单处于活动状态时才会触发,而不是当您将其关闭或选择任何选项时

$(“#SelectedNic”)。关于(“焦点”,函数(){
控制台日志(“打开”);
})

挑选
B

只需在选择框的
focus
上使用函数调用即可<代码>单击
事件将被触发,即使很好地关闭它

<select onFocus="myFunction()">
    <option value="">Select</option>
    <option value="A">B</option>
    <option value=C">D</option>
 </select>

挑选
B
必须在触发器之前声明更改事件处理程序

$('#SelectedNic')。更改(函数(){
var data=$(this.val();
警报(数据);
});
$(“#SelectedNic”)
.val('A')
.触发(“变更”)

挑选
B
D

对于vanilla JS,我更喜欢“focusin”而不是“focus”事件,因为前者是气泡

有了jQuery,您将使用“焦点”,jQuery为我们修复了它

let sltEl=document.getElementById('select-el'))
sltEl.addEventListener('focusin',evt=>{
console.log('opened')
})

选择一个选项
B
D

尝试同时使用change和keydown

 $('#SelectedNic').on('change keydown', function () {
     RegisterPanelChangeHandler();
 });
 $('#SelectedNic').on('change keydown', function () {
     RegisterPanelChangeHandler();
 });