覆盖 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;
}
我如何覆盖 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;
}