AngularJs Ng-Keypress事件工作错误

AngularJs Ng-Keypress event working wrongly?

本文关键字:错误 工作 事件 Ng-Keypress AngularJs      更新时间:2023-09-26

我正在用Angularjs开发一个应用程序。我在输入类型=文本中使用ng按键事件。在文本中键入值时,我在按键功能中得到错误的值。例如,如果我第一次输入"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
        }
    }
 )

您将需要使用ng-keyup代替。

ng-keypress在按下键时发生,并且在值填充输入之前发生。这就是为什么你在第一次按键时没有得到任何值,但在随后的按键中却可以得到。

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

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

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

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

当按下一个键并按下该键时触发keypress事件通常产生一个字符值(使用input代替)。https://developer.mozilla.org/en-US/docs/Web/Events/keypress

因此,无论是输入字段值还是作用域值(apply/digest循环等)都不会反映期望的输入值。

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

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) {
    ...
});

看守功能为我工作,我附上了我的例子

$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);" />