SAPUI5中的焦点处理

时间:2016-03-07 16:51:34

标签: sapui5


           我们要求在表格控件中使用“tab”键来仅在输入字段中导航。
           的 1。每个表行至少有6到8个字段 - 其中2个是输入字段,其余可以是文本,选择等            2.通过单击选项卡,我在单击行的最后一个输入字段时在一行中的输入字段中导航,我应该移动到下一行的第一个输入字段。
            我有以下代码,但我可以看到输入控件的焦点方法将UI聚焦到要聚焦的输入的后续输入字段。
         Jsbin - https://jsbin.com/lugesecuhe/edit?html,output
            我尝试设置像.sapMFocus和document.getElementbyId()。focus这样的样式,它们也不起作用。
            你能就此提出一些建议吗? 感谢致敬, 威拉

1 个答案:

答案 0 :(得分:0)

我完全Cakephp-3.x: How to change the data type of a selected alias?并开始研究它。我发现表中的导航是可能的,并且由类sap.ui.core.delegate.ItemNavigation执行(至少在v1.26中)。

然而,我认为非常不直观:

  1. 在Mac(Chrome或Safari)上,您必须按住 ALT 键,同时按TAB键循环显示表格的输入字段。
  2. 我还没想出如何在Windows上执行此操作
  3. 我检查了你的JSBin示例,不知何故,这些字段集中在一个奇怪的顺序。我准备了自己的示例 - the same problem - 您可以使用Alt + Tab逐行遍历输入字段。

    更新1

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

    更新2

    经过进一步调查后,我认为上述更新1的解决方案太麻烦了。

    相反,我修改了上面提到的sap.ui.core.delegate.ItemNavigation课程,该课程由sap.m.ListBase内部使用。实质上,您可以使用向上和向下箭头键循环输入字段。

    我在http://jsfiddle.net/bgerth/os6r096y准备了一个例子。相关代码是

    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
            fnPatchedItemNavigationsetItemDomRefs.call(this, aInputFields);
        } else {
            fnPatchedItemNavigationsetItemDomRefs.call(this, aItemDomRefs);
        }
    }