覆盖 DHTMLX 树结构中的 OOTB 上下导航功能?

Override OOTB up and down navigation functionalities in DHTMLX tree structure?

我如何覆盖 OOTB 键上键和键下键功能。目前在 OOTB 导航中工作正常,在我们导航到所需的选择后,当我们按下回车键时,它会显示相应的树项目详细信息。但我一直在尝试的是,细节应该只显示在向上和向下导航上,而无需按 enter 键。

以前是代码。

 tree.attachEvent('onKeyPress', function(key, event){
            if((tree._selected).length > 0){
                var xKey = 88, vKey = 86, cKey = 67, delKey = 46, escKey = 27,enterKey = 13,i, treeId, selectedNodeId, selectedNodeIds=[];
                if(event.ctrlKey && (key==cKey)) {
                    pubsub.publish('copyTree' + index);
                }   
                else if(event.ctrlKey && (key==vKey)){
                    pubsub.publish('pasteTree' + index);
                }   
                else if(event.ctrlKey && (key==xKey)){
                    pubsub.publish('cutTree' + index);
                }
                else if(key==delKey){
                    pubsub.publish('deleteTree' + index, 'delete');
                }else if(key==escKey){
                    tree.clearCut();
                    cutCopyManager.clear();
                }else if(key==enterKey){
                    if(tree._selected && tree._selected.length>0){
                        treeId = (tree._selected)[0].id;
                        showProductDetails(treeId);
                    }
                }
                else{
                     return true;
                }
            }
        });

我已经这样修改了

tree.attachEvent('onKeyPress', function(key, event){
            if((tree._selected).length > 0){
                var xKey = 88, vKey = 86, cKey = 67, delKey = 46, escKey = 27,enterKey = 13,downKey = 40,upKey = 38,
                    i, treeId, selectedNodeId, selectedNodeIds=[];
                if(event.ctrlKey && (key==cKey)) {
                    pubsub.publish('copyTree' + index);
                }   
                else if(event.ctrlKey && (key==vKey)){
                    pubsub.publish('pasteTree' + index);
                }   
                else if(event.ctrlKey && (key==xKey)){
                    pubsub.publish('cutTree' + index);
                }
                else if(key==delKey){
                    pubsub.publish('deleteTree' + index, 'delete');
                }else if(key==escKey){
                    tree.clearCut();
                    cutCopyManager.clear();
                }else if(key==enterKey){
                    if(tree._selected && tree._selected.length>0){
                        treeId = (tree._selected)[0].id;
                        showProductDetails(treeId);
                    }
                }
                else if(key==upKey){
                    if(tree._selected && tree._selected.length>0){
                        treeId = (tree._selected)[0].id;
                        showProductDetails(treeId);
                    }
                }
                else if(key==downKey){
                    if(tree._selected && tree._selected.length>0){
                        treeId = (tree._selected)[0].id;
                        showProductDetails(treeId);
                    }
                }
                else{
                     return true;
                }
            }
        });

但是它自己的选择现在已经消失了。从 2 天开始尝试调试它。谁能告诉我哪里出了问题??

我自己通过一些研究发现了它。我们实际上可以通过递增或递减索引来遍历一棵树。

else if(key==40 || key==38){
    if(tree._selected && tree._selected.length>0){
      treeId = (tree._selected)[0].id;
      indexid = tree.getIndexById(treeId);
       if(key==40){
        tempId = tree.getRootNode().id;
        indexid = indexid + 1;
        treeId = tree.getItemIdByIndex(tempId,indexid);
        showProductDetails(treeId);
       }else if(key==38){
        tempId = tree.getRootNode().id;
        indexid = indexid - 1;
        treeId = tree.getItemIdByIndex(tempId,indexid);
        showProductDetails(treeId);
    }
}
return true;
}