MAC*_*MAC 4 javascript keyboard-shortcuts angularjs ng-grid
我能够检测到单个按键,但是当我一次按下 3 个键时,它不会触发该事件。下面是我的代码。当我按下delete按钮时,它会检测到但当我点击Ctrl+ Alt+ 时O,它不会触发事件。
我正在尝试修改ng-grid单元格值,一旦它被修改,我想在按下这三个键时恢复以前的值。
$scope.pressedKey = function (keyObj) {
if (keyObj.key.toLowerCase() == "delete") {
console.log("Delete key press Detected");
}
if (keyObj.key.toLowerCase() == "control" && keyObj.key.toLowerCase() == "alt" && keyObj.key.toLowerCase() == "o")
{
console.log("Ctrl Alt O key press Detected");
}
};
$scope.ng_grid_column_defs =
[
{
field: "A",
displayName: "A",
width: "**"
},
{
field: "B",
displayName: "B",
width: "*"
},
{
field: "C",
displayName: "C",
width: "***"
}
];
$scope.my_ng_grid = {
data: "$scope.data",//this data comes from service
columnDefs: context.ng_grid_column_defs,
enableColumnResize: true,
enableCellEdit: true,
enableCellEditOnFocus: true,
enableCellSelection: false,
enableRowSelection: true,
rowHeight: 20,
rowTemplate: '<div ng-keydown="pressedKey($event)" tabindex="1" style="height: 100%; width: 100%">' +
'<div ng-repeat="col in renderedColumns" ng-class="col.colIndex()" class="ngCell ">' +
'<div ng-cell></div>' +
'</div>' +
'</div>',
beforeSelectionChange: function(rowItem, event){},
afterSelectionChange: function (rowItem, event){}
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我绝对不知道angular,所以我不会谈论它,但是
if (keyObj.key.toLowerCase() == "control" &&
keyObj.key.toLowerCase() == "alt" &&
keyObj.key.toLowerCase() == "o")
{
console.log("Ctrl Alt O key press Detected");
}
Run Code Online (Sandbox Code Playgroud)
是死路一条。
如果keyObj.key是一个字符串,那么它的toLowerCase()返回值不能"control"和"alt"并"o"在同一时间。
现在,假设keyObj是的KeyboardEvent,那么你应该有.altKey,并.ctrlKey连接到它的属性。
所以要检测ctrl + alt + o,
if (keyObj.key.toLowerCase() == "o" &&
keyObj.altKey &&
keyObj.ctrlKey)
{
console.log("Ctrl Alt O key press Detected");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1311 次 |
| 最近记录: |