Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在SmartGWT listgrid中捕获CTRL+A_Javascript_Internet Explorer_Smartgwt - Fatal编程技术网

Javascript 在SmartGWT listgrid中捕获CTRL+A

Javascript 在SmartGWT listgrid中捕获CTRL+A,javascript,internet-explorer,smartgwt,Javascript,Internet Explorer,Smartgwt,如果我有一个ListGrid,我会开发一个SmartGWT web应用程序。用户可以通过按CTRL+A选择listgrid中的每条记录。这在Chrome和Firefox中非常有效,但有时当我尝试使用Internet Explorer 11时,会收到以下警告: 警告:日志:尝试从CharSetValueToKeyName映射派生keyName:1='undefined' 我想改进我的CTRL+A函数,这样如果用户选择了listgrid中的所有内容,然后再次按下CTRL+A,另一个函数将启动。这在C

如果我有一个ListGrid,我会开发一个SmartGWT web应用程序。用户可以通过按CTRL+A选择listgrid中的每条记录。这在Chrome和Firefox中非常有效,但有时当我尝试使用Internet Explorer 11时,会收到以下警告:

警告:日志:尝试从CharSetValueToKeyName映射派生keyName:1='undefined'

我想改进我的CTRL+A函数,这样如果用户选择了listgrid中的所有内容,然后再次按下CTRL+A,另一个函数将启动。这在Chrome中非常有效,但在IE中永远不起作用,因为在捕捉到第一个CTRL+A后,上面的警告会一直出现

这是处理CTRL+A的稍微修改过的代码。正如我所说的,这在Chrome中非常有效,但在IE中却不行。我想这可能是SmartGWT/IE的错误,但可能有人想到了解决方法

    listgrid.addKeyPressHandler(new com.smartgwt.client.widgets.events.KeyPressHandler() {

        @Override
        public void onKeyPress(com.smartgwt.client.widgets.events.KeyPressEvent event) {
            if (event.getKeyName().toLowerCase().equals("a") && event.isCtrlKeyDown()) {
                event.cancel();
                if (listgrid.getSelectedRecords().length != 0 && listgrid.getSelectedRecords().length == listgridRecordList.getLength()) {
                    //we have pressed Ctrl+A two times in a row and want to the ctrl+a_twice_function
                    DO_CTRl+A_TWICE_FUNCTION();
                }
                else
                    listgrid.selectAllRecords();
            }

        }
    });

尝试使用onKeyDown而不是keyPress。要使用onKeyDown按下键,其类似字符串key=com.smartgwt.client.util.EventHandler.getKey;谢谢,我没有试过,但不幸的是,我得到了同样的结果。没问题,另一个想法是将keypressHandler从listgrid移动到包含listgrid的布局。它实际上工作得更好!或者,如果listgrid具有焦点,我会得到相同的结果,但是如果在lisgrid之外单击,然后按Ctrl+a两次,我将不会得到上面提到的警告。我想这是SmartGWT中的某种缺陷,但我现在可以使用此解决方案。谢谢