使用angularjs触发其他键而不是原始键

时间:2017-11-18 10:02:19

标签: angularjs

我试图触发" `"当我按下" keyCode = 192输入" keyCode = 13.我正在尝试下面的代码,但它无法在contenteditable div中工作。任何的想法? 以及如何申请这个?

data

1 个答案:

答案 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 来推荐。

相关问题