我们要求在表格控件中使用“tab”键来仅在输入字段中导航。
的 1。每个表行至少有6到8个字段 - 其中2个是输入字段,其余可以是文本,选择等
2.通过单击选项卡,我在单击行的最后一个输入字段时在一行中的输入字段中导航,我应该移动到下一行的第一个输入字段。
我有以下代码,但我可以看到输入控件的焦点方法将UI聚焦到要聚焦的输入的后续输入字段。
Jsbin - https://jsbin.com/lugesecuhe/edit?html,output
我尝试设置像.sapMFocus和document.getElementbyId()。focus这样的样式,它们也不起作用。
你能就此提出一些建议吗?
感谢致敬,
威拉
答案 0 :(得分:0)
我完全Cakephp-3.x: How to change the data type of a selected alias?并开始研究它。我发现表中的导航是可能的,并且由类sap.ui.core.delegate.ItemNavigation
执行(至少在v1.26中)。
然而,我认为非常不直观:
我检查了你的JSBin示例,不知何故,这些字段集中在一个奇怪的顺序。我准备了自己的示例 - the same problem - 您可以使用Alt + Tab逐行遍历输入字段。
我找到了Klaus Kronawetter撰写的博客http://jsfiddle.net/bgerth/x8h92mz8,它为sap.ui.table.Table
添加了额外的键盘处理功能。我调整了sap.m.Table
的代码,您可以在SAPUI5 Table Navigation with Tab Key找到它。
经过进一步调查后,我认为上述更新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);
}
}