我试图触发" `"当我按下" keyCode = 192输入" keyCode = 13.我正在尝试下面的代码,但它无法在contenteditable div中工作。任何的想法? 以及如何申请这个?
data
答案 0 :(得分:0)
不要使用像KeyboardEvent()
这样的纯JS方法,它有跨浏览器支持问题,而是使用jQuery。
现在angular.element
基本支持jquery,但它不支持您使用的Event()方法。所以最好的方法是在你的代码库中使用jquery库(在index.html中的angularjs之前附加了脚本标记)。然后将代码更改为:
$scope.pressKey = function(event) {
if (event.keyCode == 13) {
event.preventDefault();
var e = jQuery.Event('keypress');
console.log(e);
e.which = 192;
e.keyCode = 192;
$timeout(function() {
$('#regularDot').trigger(e);
});
} else if(event.keyCode == 192){
console.log("Newly triggered event catched with keyCode " + event.keyCode);
}
}
这里我做了一些改动,比如在$timeout
中添加触发器方法,以便在设置(触发)新事件之前等待很短的时间来完成先前触发的事件的preventDefault
,并且也在做$apply
。我已将新触发的事件类型更改为keypress
而不是keydown
,以便在触发事件后,您将能够使用该元素上的ng-keypress处理它(使用id regularDot)。
类似 plunker example 来推荐。