2016-04-25 47 views
0

在这段代码中,我想为输入字段添加验证,如果值为但我不知道为什么我无法更新并输入新值在输入字段中。简单地说,我无法更改输入字段值。输入字段没有用ng-keydown事件更新

如果我删除现有值并在现有值中添加某些值,则值保持不变。

这里是HTML代码:

<input ng-model="lineitemDetailsCtrlAs.lineItems.orderedQuantity" type="text" class="col-md-6 text-right panel-row-spacing" 
       ng-keydown="valueChanged($event)" required 
       /> 

和角代码是:

$scope.valueChanged = function (event) { 
var quantityRequire={}; 
    if (event.keyCode === 48 || lineitemDetailsCtrlAs.lineItems.orderedQuantity == 0) { 
      quantityRequire = { 
       "messageId": "ORDERED_QUANTITY", 
       "params": [], 
       "severity": "ERROR" 
      }; 
      lineitemDetailsCtrlAs.errorMessages.push(quantityRequire); 
      } 
      else{ 
      event.preventDefault(); 
      } 
    }; 
+0

你能告诉你的控制器代码? –

+0

我已经显示了我的控制器代码。 –

+0

你可以创建一个plunker,http://plnkr.co – dreamweiver

回答

1

您正在通过停止事件 “event.preventDefault();”,因为只有键码48 (只有数字0)是可以接受的,其他keyevents在其他条件下掉下来并停止更新输入值。

+0

我已经删除了代码的其他部分,但我再次无法更新输入字段 –

0

我觉得Rameshkumar是的Arumugam说得对,什么是你的代码错误,下面是一个工作示例

angular.module("myApp", []) 
 
    .controller("MainCtrl", function($scope) { 
 
    $scope.lineItems = { 
 
     orderedQuantity: 12 
 
    }; 
 
    $scope.errorMessages = []; 
 
    $scope.valueChanged = function(event) { 
 
     var quantityRequire = {}; 
 
     if (event.keyCode === 48 || $scope.lineItems.orderedQuantity == 0) { 
 
     quantityRequire = { 
 
      "messageId": "ORDERED_QUANTITY", 
 
      "params": [], 
 
      "severity": "ERROR" 
 
     }; 
 
     alert(quantityRequire["messageId"]); 
 
     $scope.errorMessages.push(quantityRequire); 
 
     } 
 
    }; 
 
    })
<div ng-app="myApp"> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
    <div ng-controller="MainCtrl"> 
 
    <input ng-model="lineitemDetailsCtrlAs.lineItems.orderedQuantity" type="text" class="col-md-6 text-right panel-row-spacing" ng-keydown="valueChanged($event)" required /> 
 
    </div> 
 
</div>