2016-04-25 49 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>