AngularJs Ng-Keypress活动工作错误?

时间:2014-07-15 05:33:40

标签: javascript angularjs

我正在Angularjs开发一个应用程序。我在input type = text中使用ng-keypress事件。在文本中键入值时,我在按键功能中得到错误的值。例如,如果我输入“1”,我第一次得到undefined。第二次,键入任何其他值会给出第一个值

<input ng-model="NodeId_1" type="text" ng-keypress="getValue()"/>

 var angularapp = angular.module('nameapp', []);

    angularapp.controller('NameCtrl', function ($scope) {
        $scope.getValue = function () {
            alert($scope.NodeId_1);//Here first time undefined is coming and second what ever we enter first value will come
        }
    }
 )

3 个答案:

答案 0 :(得分:11)

您需要使用ng-keyup代替。

按下键时会发生

ng-keypress,并且在值填充输入之前。这就是为什么你没有在第一个按键上获得任何价值,但是在随后的按键上你会得到。

使用ng-keyup并解决您的问题,因为一旦该值已填充输入,就会发生此问题。

<input ng-model="NodeId_1" type="text" ng-keyup="getValue()" />

ng-keypress按预期工作,但不适用于您的要求。

工作plunkr:http://plnkr.co/edit/OHWDZo68siDlcrXnLyzJ?p=preview

答案 1 :(得分:3)

  

按下某个键并按下该键时会触发按键事件   通常会产生一个字符值(改为使用输入)。   https://developer.mozilla.org/en-US/docs/Web/Events/keypress

因此,输入字段值和范围值(应用/摘要循环等)都不会反映预期的输入值。

解决方案取决于您的要求。以下是一些:

1)在输入字段上使用另一个事件:change,keyup,...

2)在监听器方法中使用$ event对象:

<input ng-model="NodeId_1" type="text" ng-keypress="getValue($event)"/>

$scope.getValue = function (event) {
    console.log(event)
}

3)为您的范围内的NodeId_1值创建一个观察者:

$scope.$watch('NodeId_1', function(newVal) {
    ...
});

答案 2 :(得分:0)

watcher函数为我工作,我附上示例

$scope.$watch('itemm.montoAmodificar', function (newValue) {
    $scope.fnActualizarNuevoSaldoDependencia(parseFloat(newValue));
});

以下是html代码

<input ng-model="itemm.montoAmodificar" my-focus class="form-control" type="text" placeholder="Ingrese el monto" ng-keypress="fnActualizarNuevoSaldoDependencia($event);" />