繁体   English   中英

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

[英]AngularJS - ng-keypress not working for enter event

在我的项目中,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不能用于输入,它适用于所有其他键。

最后,我不得不用<button>标签替换<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> 

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

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

您对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'键时不应该有任何区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM