2015-06-19 30 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')" /> 
相关问题