即使值没有改变也触发onChange

时间:2018-09-13 16:25:48

标签: javascript

我们有此选择,可用于在各种类别的链接之间导航。 “狗”将用户带到狗链接,“猫”将用户带到猫链接,等等。

这是我无法正常使用的用例:

1)用户选择“狗”

2)用户在狗链中向下滚动

3)用户再次单击“狗”

在这一点上,我希望页面滚动到dogs部分的顶部,但是,第二次选择“ Dogs”不会执行任何操作,因为select的值没有更改并且onChange永远不会触发

我应该提到,出于对可访问性的考虑,我们已经取消了onClick。

1 个答案:

答案 0 :(得分:1)

从可访问性的角度来看,您不希望完全依赖onClick事件来执行此操作(WebAIM on the onClick event)。

如文章所述,在大多数现代浏览器中,按下表单控件元素(包括<select>)上的Enter键将触发onClick事件。

对于较旧的浏览器,最好的填充方法是寻找一个keydown事件,并使用回车键的密钥代码13

我认为,针对您的情况的最佳解决方案是寻找onChangeonClickkeydown(已按Enter的位置),然后采取相应措施。

这里是fiddle,用于检查select元素上的事件。