Javascript 在SmartGWT listgrid中捕获CTRL+A
如果我有一个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的错误,但可能有人想到了解决方法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.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中的某种缺陷,但我现在可以使用此解决方案。谢谢