在我的项目中,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不能用于输入,它适用于所有其他键。
答案 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'键时不应该有任何区别。