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>
在我的项目中,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>