【发布时间】:2010-04-21 12:09:44
【问题描述】:
I have an HTML select list which, when an item is selected, must show different information beneath it.当通过单击(鼠标)选择选择列表项时触发 onclick 或 JQuery 更改事件,但在用户使用按键(键盘)时不会触发。
知道要观察什么事件以确定所选列表项何时更改吗?
这是一个 BASIC 测试示例:
<select id="mylist" name="mylist">
<option value="">(none)</option>
<option value="1">Test 1</option>
<option value="2">Test 2</option>
<option value="3">Test 3</option>
</select>
<span id="myspan"></span>
<script type="text/javascript">
$("#mylist").change(function() {
$("#myspan").html($("#mylist").attr("selectedIndex"));
});
</script>
【问题讨论】:
-
您没有在收听
click事件。您正在收听change事件。相应地更新标题:) -
在@BalusC 的辩护中,
click和change并不相同。change仅在选择更改时触发——单击已选择的选项不会触发它。另外,为什么使用键盘更改选项会触发click事件?如果有什么是愚蠢的,那么它并没有在标题中适当地总结您的问题。最后,为什么用键盘更改选择元素会触发click事件?亲爱的,这没有多大意义;-) -
哇,多么好的态度。我有新粉丝了吗?
-
安迪,从逻辑上讲,如果再次单击已选择的选项,谁会希望
span中的信息发生变化?如果您测试上面的测试示例,您将看到onclick和onchange都由jquery 处理程序处理。 -
@Jimbo:我不明白你认为这有什么关系——也许你错过了我的意思。仅供参考,如果
onclick和onchange都由您的change处理程序处理,则该函数将触发两次。相反,change事件先于click事件,并且仅处理change事件。
标签: javascript jquery html events selectlist