Javascript Telerik RadTreeView OnClientNodeChecked与IE9和x2B的兼容性问题;

Javascript Telerik RadTreeView OnClientNodeChecked与IE9和x2B的兼容性问题;,javascript,jquery,telerik,client-side,radtreeview,Javascript,Jquery,Telerik,Client Side,Radtreeview,我有一个RadTreeView,具有动态级别和基于条件的可检查节点。某些级别可能没有可检查节点、某些可检查节点或所有可检查节点 我使用OnClientNodeChecked事件将选中节点的ID保留在一个隐藏字段中,以供以后使用,并更新选中节点计数器 每次用户单击节点旁边的复选框时,都会触发此事件。现在,如果用户按住shift键并单击复选框,则应选中/取消选中所有可检查的子节点 这是treeview控件: <telerik:RadTreeView RenderMode="Lightweigh

我有一个RadTreeView,具有动态级别和基于条件的可检查节点。某些级别可能没有可检查节点、某些可检查节点或所有可检查节点

我使用OnClientNodeChecked事件将选中节点的ID保留在一个隐藏字段中,以供以后使用,并更新选中节点计数器

每次用户单击节点旁边的复选框时,都会触发此事件。现在,如果用户按住shift键并单击复选框,则应选中/取消选中所有可检查的子节点

这是treeview控件:

<telerik:RadTreeView RenderMode="Lightweight" runat="Server" ID="treeAccounts" EnableDragAndDrop="false" EnableDragAndDropBetweenNodes="false" Skin="Vista" CheckBoxes="True"
                OnClientLoad="initializeSelectedNodes" OnClientNodeChecked="treeNodeChecked">
            </telerik:RadTreeView>

下面是javascript函数:(在OnClientNodeChecked中调用treeNodeChecked)

var树;
函数树已取消选中(发送方、事件参数){
tree=$find(“”);
var node=eventArgs.get_node();
//在这里,我保存选中节点的ID
更新所选节点(节点);
if(eventArgs._domEvent.shiftKey | | event.shiftKey){
var children=node.get_allNodes();
var checkedState=node.get_checked();
//如果选中的节点有子节点且按下shift键
//单击复选框后,我选中/取消选中其子项
//节点。
适用于(儿童为m)
{ 
var child=childs[m];
child.set_checked(checkedState);
//在这里,我保存子节点的ID
updateSelectedNodes(子节点);
}
}
}
这在Chrome、Firefox和IE8-中非常有效,但在IE9+中不起作用。 问题是在IE9+中,事件参数和事件移位键都是未定义的

我还尝试检查事件。keyCode事件。这是但由于事件不是按键或按键,因此它们也未定义


关于如何在IE9+中实现这一点,有什么想法吗?提前谢谢。

在到处挖掘之后,我找到了一条路

我添加了以下代码:

var shiftKeyPressed;

document.addEventListener("keydown", keyDownEvent, false);

function keyDownEvent(e) {
    var keyCode = e.keyCode;
    if(keyCode==16) {
        shiftKeyPressed = true;
    } 
}

document.addEventListener("keyup", keyUpEvent, false);

function keyUpEvent(e) {
    var keyCode = e.keyCode;
    if(keyCode==16) {
        shiftKeyPressed = false;
    } 
}
然后,当我检查是否按下shift键时,我添加了新变量:

if (eventArgs._domEvent.shiftKey || event.shiftKey || shiftKeyPressed){...}
现在,它在每个浏览器中都能正常工作

if (eventArgs._domEvent.shiftKey || event.shiftKey || shiftKeyPressed){...}