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

AngularJS - ng-keypress not working for enter event

在我的项目中,ng-keypress 不适用于所有地方的 Enter 键。在某些地方,它工作得很好,但在其他地方,它适用于除 Enter Key.

之外的所有键

我在这里调用 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.

之外的所有其他按键,我可以正确地看到 keycode
$scope.test = function () { 
            alert('test called'+event.keyCode);
        }

我浏览了许多 Stack Overflow 文章,我确信它的语法是正确的,但我对它的奇怪行为感到非常困惑。

知道为什么 ng-keypress 对输入不起作用而对所有其他键都起作用。

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

您可以在浏览器的开发者工具中检查元素的现有处理程序

您对 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>

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

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

最后我不得不用 <button> 标签替换 <div> 标签来解决这个问题。 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>