2015-06-19 55 views
2

我必須使用ng-change檢查兩個字段的驗證。選定的值不能相同,所以我已經實現了下面的邏輯,但是這個函數甚至沒有被調用。它已經幾個小時了,我無法弄清楚我做錯了什麼。請檢查邏輯是否正確執行。如何檢查字段驗證,選定的值不能相同?

到目前爲止已經試過代碼....

main.html中

<div class="panel-body"> 
     <form name="addAttesForm" id="addAttesForm" novalidate k-validate-on-blur="false"> 
       <div class="row"> 
         <div class="form-group col-md-6"> 
          <label for="roleType" class="col-md-4">Role Type:</label> 
          <div class="col-md-8"> 
           <select 
            kendo-drop-down-list 
            data-text-field="'text'" 
            data-value-field="'id'" name="roleType" 
            k-option-label="'Select'" 
            k-data-source="roleTypeDataSource" 
            ng-model="attestorDTO.riskAssessmentRoleTypeKey" 
            id="roleType">   
           </select> 
          </div> 
         </div> 
       </div> 
       <div class="row"> 
         <div class="form-group col-md-6"> 
           <label for="attestorWorker" class="col-md-4">Attestor:</label> 
          <div class="col-md-8"> 
           <input type="text" class="form-control" id="attestorWorker" required 
            ng-model="attestorDTO.attestorWorker" name="attestorWorker" 
            ng-change="validateProxy('attestorWorker','proxyWorker')" 
            ng-model-options="{updateOn: 'blur'}" 
            ng-click="openAttestorSearch()" readonly="readonly"/> 
          </div> 
         </div> 
       </div> 
       <div class="row"> 
         <div class="form-group col-md-6"> 
           <label for="proxyWorker" class="col-md-4">Proxy :</label> 
          <div class="col-md-8"> 
           <input type="text" class="form-control" id="proxyWorker" required 
            ng-model="attestorDTO.proxyWorker" name="proxyWorker" 
            ng-model-options="{updateOn: 'blur'}" 
            ng-click="openProxySearch()" ng-disabled="!attestorDTO.attestorWorker" ng-change="validateProxy('attestorWorker','proxyWorker')" readonly="readonly"/> 
            <p class="text-danger" ng-show="addAttesForm.proxyWorker.$error.dateRange">Attestor and Proxy can not be same</p> 
          </div> 
         </div> 
       </div> 
       <div class="row"> 
        <div class="col-md-6"> 
         <button class="btn btn-primary pull-right" type="button" ng-disabled="addAttesForm.$invalid" ng-click="saveAttestor()">Add attestor</button> 
        </div> 
       </div> 
     </form> 
    </div> 

main.js

$scope.validateProxy = function(startField, endField) { 
     console.log("calling validation..."); 
     var isValid = ($scope.attestorDTO[startField]) <= ($scope.attestorDTO[endField]); 
     $scope.addAttesForm[endField].$setValidity('dateRange',isValid); 
     $scope.addAttesForm.$setValidity('dateRange',isValid); 
    }; 
+0

的正確方法是使用驗證指令,這也許可以幫助你:http://stackoverflow.com/questions/30467088/angularjs-password-confirmation-nomatch -work-but-form-is-invalid/30467774#30467774 –

+0

我們是否有解決方案而不是指令? – aftab

回答

1

刪除只讀屬性。 ng-change不會在只讀輸入元素上觸發,模型應該通過UI而不是JavaScript代碼來更改。

嘗試這樣的:

<input type="text" class="form-control" id="attestorWorker" required 
            ng-model="attestorDTO.attestorWorker" name="attestorWorker" 
            ng-change="validateProxy('attestorWorker','proxyWorker')" 
            ng-model-options="{updateOn: 'blur'}" 
            ng-click="openAttestorSearch()" /> 

<input type="text" class="form-control" id="proxyWorker" required 
            ng-model="attestorDTO.proxyWorker" name="proxyWorker" 
            ng-model-options="{updateOn: 'blur'}" 
            ng-click="openProxySearch()" ng-disabled="!attestorDTO.attestorWorker" ng-change="validateProxy('attestorWorker','proxyWorker')" /> 
相關問題