我想捕捉下面文本框上的回车键事件。为了更清楚地说明这一点,我使用ng-repeat填充tbody。下面是HTML:

<td><input type="number" id="closeqty{{$index}}" class="pagination-right closefield" 
    data-ng-model="closeqtymodel" data-ng-change="change($index)" required placeholder="{{item.closeMeasure}}" /></td>

这是我的模块:

angular.module('components', ['ngResource']);

我使用一个资源来填充表,我的控制器代码是:

function Ajaxy($scope, $resource) {
//controller which has resource to populate the table 
}

当前回答

你可以使用ng-keydown, ng-keyup, ng-press,像这样。

触发一个函数:

   <input type="text" ng-keypress="function()"/>

或者如果你有一个条件,比如当他按下escape(27是键) 转义代码)

 <form ng-keydown=" event.which=== 27?cancelSplit():0">
....
</form>

其他回答

另一个简单的选择:

<input ng-model="edItem" type="text" 
    ng-keypress="($event.which === 13)?foo(edItem):0"/>

ng-ui的替代品:

<input ng-model="edItem" type="text" ui-keypress="{'enter':'foo(edItem)'}"/>

你可以使用ng-keydown, ng-keyup, ng-press,像这样。

触发一个函数:

   <input type="text" ng-keypress="function()"/>

或者如果你有一个条件,比如当他按下escape(27是键) 转义代码)

 <form ng-keydown=" event.which=== 27?cancelSplit():0">
....
</form>

这是我的指示:

mainApp.directive('number', function () {
    return {
        link: function (scope, el, attr) {
            el.bind("keydown keypress", function (event) {
                //ignore all characters that are not numbers, except backspace, delete, left arrow and right arrow
                if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 8 && event.keyCode != 46 && event.keyCode != 37 && event.keyCode != 39) {
                    event.preventDefault();
                }
            });
        }
    };
});

用法:

<input number />

所有你需要做的事情是获得事件如下:

console.log(angular.element(event.which));

指令可以做到这一点,但你不能这样做。

尝试

ng-keypress="console.log($event)"
ng-keypress="alert(123)"

什么也没为我做。

Strangley的例子在https://docs.angularjs.org/api/ng/directive/ngKeypress,它做ng-keypress="count = count + 1",工作。

我找到了一个替代的解决方案,它有按Enter调用按钮的ng-click。

<input ng-model="..." onkeypress="if (event.which==13) document.getElementById('button').click()"/>
<button id="button" ng-click="doSomething()">Done</button>