【发布时间】:2017-06-22 05:54:51
【问题描述】:
我有一个项目列表,我希望能够使用键盘向上和向下按钮滚动浏览这些项目。我目前能够获得类似的预期效果,即使用 tabindex 属性向下移动列表。我还使用 ng repeat 来生成元素的实例。关于如何通过上下键实现聚焦和上下滚动列表的提示或线索?
下面的示例代码。
table ng-if="!toolbarCtrl.loadingContacts" class="table dataTable hover" id="table3">
<tbody role="alert" aria-live="polite" aria-relevant="all">
<tr class="pointer" tabindex="0" ng-repeat="contact in toolbarCtrl.contactEntities | filter:toolbarCtrl.toolbarSearchStringAfterDelay | orderBy: toolbarCtrl.tab == toolbarCtrl.tabs.RECENT ? '-dateSeen' : (toolbarCtrl.tab == toolbarCtrl.tabs.ALL ? '+data.fileAs' : '')"
ng-class="" ng-if="toolbarCtrl.toolbarSearchStringAfterDelay" ng-click="toolbarCtrl.selectContact(contact)">
<td rel="popover_dark" ng-class="contact.loading ? 'contactDisabled' : '' " data-container="body" data-toggle="popover" data-placement="right" data-content="" data-original-title="" title="" class="sorting_1 has_popover">
</td>
</tr>
</tbody>
</table>
我将你的 checkKey 函数变成了这个
controller.checkKey = function (event) {
$("tr[tabindex=0]").focus();
var event = window.event;
if (event.keyCode == 40) { //down
var idx = $("tr:focus").attr("tabindex");
idx++;
if (idx > 6) {
idx = 0;
}
$("tr[tabindex=" + idx + "]").focus();
}
if (event.keyCode == 38) { //up
var idx = $("tr:focus").attr("tabindex");
idx--;
if (idx < 0) {
idx = 6;
}
$("tr[tabindex=" + idx + "]").focus();
}
}
我很接近,但它直接跳到最后一个元素。这看起来对吗?
【问题讨论】:
-
我明白为什么你也得到了所有的 tabindex="0"...你没有为 tabindex 值使用变量,你每次都将它分配给 0。跨度>
标签: javascript jquery html angularjs