我有一个包含输入字段的SAPUI5表。我在http://jsfiddle.net/bgerth/x8h92mz8/准备了一个例子。
当您按 ALT + TAB 时,您可以循环浏览表格中的输入字段(我只是通过查看sap.m.ListBase.prototype._startItemNavigation
找到了这一点)。
只有按TAB才会将第一个元素聚焦在表格之外。
我认为这是非直观的。有没有办法让TAB单独工作?
更新
Alt + Tab适用于Chrome和Safari,但不适用于我的Mac上的Firefox(45.0.2)。它在Windows上根本不起作用,因为该组合保留用于切换打开的应用程序窗口。
答案 0 :(得分:0)
到目前为止,我发现有两种解决方案来解决这个问题
我找到了Klaus Kronawetter撰写的博客SAPUI5 Table Navigation with Tab Key,它为sap.ui.table.Table
添加了额外的键盘处理功能。我调整了sap.m.Table
的代码,您可以在http://jsfiddle.net/bgerth/os6r096y找到它。
不幸的是,代码相当长。
经过进一步调查后,我认为上述提案1的解决方案太麻烦了。
相反,我修改了上面提到的sap.ui.core.delegate.ItemNavigation
课程,该课程由sap.m.ListBase
内部使用。实质上,您可以使用向上和向下箭头键循环输入字段。
我在http://jsfiddle.net/bgerth/0r9L30wd准备了一个例子。相关代码是
var fnPatchedItemNavigationsetItemDomRefs = sap.ui.core.delegate.ItemNavigation.prototype.setItemDomRefs;
sap.ui.core.delegate.ItemNavigation.prototype.setItemDomRefs = function setItemDomRefsPatched(aItemDomRefs) {
// 'this' is now the instance of sap.ui.core.delegate.ItemNavigation
jQuery.sap.log.debug("Patched version of sap.ui.core.delegate.ItemNavigation.setItemDomRefs");
var aInputFields = $(aItemDomRefs).find("input:enabled").get();
if (aInputFields[0]) {
// There is at least one enabled input field in this table
return fnPatchedItemNavigationsetItemDomRefs.call(this, aInputFields);
} else {
return fnPatchedItemNavigationsetItemDomRefs.call(this, aItemDomRefs);
}
}