当使用键盘操作时,仅当用户按Enter键时,才会在列表框上激发SelectedIndexChanged事件

本文关键字:列表 事件 SelectedIndexChanged Enter 键盘 操作 用户 键时 | 更新日期: 2023-09-27 18:22:22

我有一个列表框,我从我的代码绑定中填充它。我有一个SelectedIndexChanged事件的处理程序。当我使用鼠标时,一切都很好。这只是一个简单、标准的列表框,没有任何神秘之处

但是,当我尝试使用键盘时,只要向下箭头一次,SelectedIndexChanged事件就会被触发,因为选择当然会发生变化。列表不会等待我按Enter键主动选择项目。因此,如果我想选择第五个项目,该事件将被触发五次,每次选择一次

问题:当用键盘操作列表框时,有没有办法让列表框只在Enter键上选择项目?或者我应该使用不同的控件来让用户从列表中选择项目

似乎这对于可访问性来说是非常必要的,所以应该有人有一个解决方案。这是我的列表框的aspx代码。

<asp:ListBox id="OwnersList" runat="server" AutoPostBack="True" class="dropdown-list StopClickPropagation" onblur='$(".dropdown-list").hide();' on OnSelectedIndexChanged="OwnerSelectionChanged">
</asp:ListBox>

当使用键盘操作时,仅当用户按Enter键时,才会在列表框上激发SelectedIndexChanged事件

AFAIK、listbox或任何其他asp.net控件都可以满足您的要求,而无需额外的Javascript代码。为了满足您的需求,您需要在客户端连接onkeypress和onclick事件,并通过__doPostBack方法进行回发。