angular(^4)-监控表格按键行为的问题

  之前开发的时候,用的是angular4,用ngGrid的时候要求对表格中的按键进行监控,具体如下:

  1)上下左右,按方向移动位置(指编辑单元格);

  2)enter,移动到下一个可编辑单元格;

  3)一个数字输入框(cellEditorFramework)里双击空格键完成某个特定操作;

 

  那这其中遇到什么问题呢?

  1)表格对上下左右键有默认的焦点移动事件,当你通过当前位置,键值,开始编辑方法(startEditingCell)来移动的时候,焦点会移动两次,处理方法为通过设置定时器清除默认的焦点移动,然后再执行自定义的移动事件

  思考:当需处理的按键行为过多时,定时器处理会变得很麻烦,难以把握,有没有可以禁掉默认的焦点移动事件呢?或者其它的简洁的移动处理方法呢?

 

  2)无法通过keydown、keyup、keypress某一种方法来监控所有的按键行为,暂时的处理方法是keypress处理enter,keyup处理上下左右,

  思考:是否有方法可以监控所有的按键输入?

 

  3)对于自定义的单元格编辑器,需要在编辑器内设置监控方法并实时将变更发送到表格层(onchange),

// 编辑器内的按键监控
constructor(
) {
super();
const that = this;
document.onkeydown = function (e) {
if (e.which === 32) {
that.value = that.value.trim();
that.params['onChange'](e, that.value);
}
};
document.onkeyup = function (e) {
if ((e.which === 37 || e.which === 38 || e.which === 39 || e.which === 40) && that.params['onChange']) {
that.value = that.value;
that.params['onChange'](e, that.value);
}
};
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfpyw.html