HTML <select>是否有 onSelect 事件或等效事件?

2022-08-30 00:34:32

我有一个输入表单,允许我从多个选项中进行选择,并在用户更改选择时执行某些操作。例如,

<select onChange="javascript:doSomething();">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

现在,仅当选择更改时才触发。doSomething()

我想在用户选择任何选项时触发,可能再次选择相同的选项。doSomething()

我尝试过使用“onClick”处理程序,但是在用户开始选择过程之前触发了该处理程序。

那么,有没有办法在用户每次选择时触发一个函数呢?

更新:

达里尔建议的答案似乎有效,但并非始终如一地有效。有时,一旦用户单击下拉菜单,甚至在用户完成选择过程之前,事件就会被触发!


答案 1

这是最简单的方法:

<select name="ab" onchange="if (this.selectedIndex) doSomething();">
    <option value="-1">--</option>
    <option value="1">option 1</option> 
    <option value="2">option 2</option>
    <option value="3">option 3</option>
</select>

适用于鼠标选择和键盘向上/向下键,选择是聚焦的。


答案 2

我需要一些完全相同的东西。这对我有用:

<select onchange="doSomething();" onfocus="this.selectedIndex = -1;">
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

支持此功能:

当用户选择任何选项时,可能再次选择相同的选项