有没有办法避免在SAPUI5表中的输入字段中循环时保持ALT键?

时间:2016-04-28 07:14:33

标签: sapui5 setfocus

我有一个包含输入字段的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上根本不起作用,因为该组合保留用于切换打开的应用程序窗口。

1 个答案:

答案 0 :(得分:0)

到目前为止,我发现有两种解决方案来解决这个问题

提案1:调整标签键处理

我找到了Klaus Kronawetter撰写的博客SAPUI5 Table Navigation with Tab Key,它为sap.ui.table.Table添加了额外的键盘处理功能。我调整了sap.m.Table的代码,您可以在http://jsfiddle.net/bgerth/os6r096y找到它。

不幸的是,代码相当长。

提案2:启用向上/向下箭头键

经过进一步调查后,我认为上述提案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);
    }
}