本帖最后由 Lynn.Dou 于 2021-8-12 18:05 编辑
背景:
最新有小伙伴反馈了一个问题:
参考之前的技术博客:如何禁用键盘快捷键 ,想禁用键盘 Backspace键,却发现执行以下代码无效:
- spread.commandManager().setShortcutKey(null, GC.Spread.Commands.Key.backspace, false, false, false, false);
复制代码 这是为什么呢?
1、解析
通过上述代码禁用快捷键的前提是,这个快捷键的执行对应着一个命令。如 ctrl+c、ctrl+v 。
而Backspace键 并没有相应的命令,他与A、B、C等字母键一样,按下键就会进入编辑状态。所以上述代码是无效的。
2、解决方案
我们需要重新注册一个command,在这个command中定义相应的代码逻辑,从而实现禁用Backspace键的需求。
需求1:
选择单元格时,backSpace键无效;进入编辑状态时,backSpace键有效。代码如下:- var command = {
- canUndo: false,
- execute: function (context, options, isUndo) {
- var Commands = GC.Spread.Sheets.Commands;
- if (isUndo) {
- Commands.undoTransaction(context, options);
- return true;
- } else {
- Commands.startTransaction(context, options);
- if(sheet.isEditing()) {
- return false
- }
- Commands.endTransaction(context, options);
- return true;
- }
- }
- };
- spread.commandManager().register("ban", command);
- spread.commandManager().setShortcutKey("ban", GC.Spread.Commands.Key.backspace, false, false, false, false);
复制代码
需求2:
选择单元格时,backSpace键无效;进入编辑状态时,backSpace键也无效。代码如下:
- var command = {
- canUndo: false,
- execute: function (context, options, isUndo) {
- var Commands = GC.Spread.Sheets.Commands;
- if (isUndo) {
- Commands.undoTransaction(context, options);
- return true;
- } else {
- Commands.startTransaction(context, options);
- Commands.endTransaction(context, options);
- return true;
- }
- }
- };
- spread.commandManager().register("ban", command);
- spread.commandManager().setShortcutKey("ban", GC.Spread.Commands.Key.backspace, false, false, false, false);
复制代码
大家可以根据需求选择。
|
|