我正在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
}
}
)
答案 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);" />