AngularJS - ng-keypress不适用于输入事件

时间:2017-11-06 10:40:48

标签: javascript html angularjs javascript-events enter

在我的项目中,ng-keypress不能用于输入密钥'来自所有地方。从某些地方来看,它工作得非常好,但是从其他地方来看,它适用于所有按键,除了“输入密钥”。

我在ng-keypress上调用了test()方法。

<div class="actions">
    <div class="ui approve button red" data-ng-click="test()" id="confirm-yes" tabindex="8" ng-keypress="test()">Yes</div>
    <div class="ui cancel button" data-ng-click="test()" id="confirm-no" tabindex="7" ng-keypress="test()">Cancel</div>
</div>

从测试方法来看,我只是显示关键代码。我可以正确地看到除了Enter之外的所有其他按键的键码。

$scope.test = function () { 
            alert('test called'+event.keyCode);
        }

我已经浏览了很多StackOverflow文章,我确信它的语法是正确的但是我对它的奇怪行为感到很困惑。

知道为什么ng-keypress不能用于输入,它适用于所有其他键。

4 个答案:

答案 0 :(得分:1)

最后,我必须将<div>标记替换为<button>标记才能解决此问题。 Button tag完美地解决了这个问题。

<div class="actions">
    <button class="ui approve button red" data-ng-click="test()" id="confirm-yes" tabindex="8" ng-keypress="test()">Yes</button>
    <button class="ui cancel button" data-ng-click="test()" id="confirm-no" tabindex="7" ng-keypress="test()">Cancel</button>
</div> 

答案 1 :(得分:0)

可能是因为调用event.stopImmediatePropagation()的另一个处理程序:到目前为止,没有任何其他处理程序被调用

您可以在浏览器的开发人员工具

中查看元素的现有处理程序

答案 2 :(得分:0)

您对ng-click和ng-keypress使用相同的功能 test() ,尝试替换为其他功能

   <div class="ui approve button red" data-ng-click="test()" id="confirm-yes" tabindex="8" ng-keypress="testcheck()">Yes</div>
    <div class="ui cancel button" data-ng-click="test()" id="confirm-no" tabindex="7" ng-keypress="testcheck()">Cancel</div>

答案 3 :(得分:0)

我用 ngKeypress 指令解决了同样的问题。特别有趣的是,在Angular的官方示例中,按“Enter”被识别。

使用 ngKeydown 指令解决了这个问题。处理'Enter'键时不应该有任何区别。