2016-04-04 2 views
1

В моей форме есть две кнопки: «Черновик» и «Отправить», поэтому для черновика некоторые валидации применимы и одинаковы для кнопки отправки. Я одна переменная cmpnStatus она инициализируется со значением 1. Для проекта значение cpmnStatus является 0 и представить это 1.Как включить/отключить проверки динамически в угловых js

<div class="form-group">     
      <label>Short Description<span class="red-ast">*</span></label><br/> 
      <textarea ng-model="shortdesc" ng-change="shortchange(shortdesc)" class="form-control b-rad3" ng-required="cmpnStatus == 0"></textarea>  
    </div> 

<button type="submit" ng-click="campform.$valid && submitDraft(campform)" class="btn btn-draft">Save as draft</button>    
<button type="submit" class="btn btn-launch" ng-click="campform.$valid && submitCampaign()">Submit for Approval</button> 

Ниже приведен код функции submitDraft.

$scope.submitDraft = function(form){ 
     $scope.cmpnStatus = 0; 
     if(form.$valid) { 
      alert("valid"); 
     } else { 
      alert("invalid"); 
     } 
     //Then call to save data in db 
}; 

Моя проблема, когда я нажимаю на форме проекта показывает силу и сохранить данные в БД и после этого он указывает требуемую проверку, потому что изначально значение cpmnStatus является 1 и в соответствии с условием необходимым условием проверки не удается. Снова я нажимаю кнопку черновика, теперь требуется, чтобы проверка выполнялась нормально, потому что значение cpmnStatus изменяется от 1 до 0. Я хочу, чтобы при нажатии пользователем кнопки черновика и при изменении значения cpmnStatus она должна показывать мне требуемую проверку (даже при первом щелчке) согласно условию (ng-required = "cmpnStatus == 0"). Есть ли другой способ сделать то же самое?

+0

Этот вопрос мне непонятен. Можете ли вы изменить его, пожалуйста? –

+0

@ jeff-dieeriks У меня есть две кнопки для одной формы, я хочу, чтобы при нажатии пользователем одной кнопки некоторые проверки были применимы, и когда пользователь нажимает на другую кнопку, применяются другие проверки. например У меня есть два поля ввода: «Название», «Описание», поэтому, когда пользовательское название кнопки «1» должно быть обязательным, а когда пользователь нажимает на кнопку «два», оба поля ввода должны быть обязательными. – user3542450

ответ

1

первого изменения HTML, чтобы быть похожим на это:

<button type="submit" ng-disabled="campform.$error" ng-click="submitDraft(campform)" class="btn btn-draft">Save as draft</button>    
<button type="submit" class="btn btn-launch" ng-disabled="campform.$error" ng-click="submitCampaign()">Submit for Approval</button> 

кнопку для пользователя Отключение при форме недопустим лучше.

О cmpnStatusThings я предлагаю вам использовать кнопку флажок или переключатель для переключения между проектом или утверждения режима:

<input type="checkbox" ng-model="cmpnStatus" ng-true-value="1" ng-false-value="0"/> 

Радио образец:

<input type="radio" ng-model="cmpnStatus" ng-value="1"/> 
<input type="radio" ng-model="cmpnStatus" ng-value="0" /> 
+0

Спасибо за предложение подумать о переключателе. – user3542450

0

Спасибо за разъяснение. Вот функция, я в настоящее время с помощью:

$scope.checkIfSaveAllowed = function() { 
    var timer = setTimeout(function() { 
    var validControls = document.getElementsByClassName('has-feedback ng-scope has-success'); 
    var modalSaveBtn = document.getElementById('eventModalSaveBtn'); 
    if (validControls.length >= 3) { 
     if (validControls.length == 4) { 
     modalSaveBtn.disabled = false; 
     } 
     else if (validControls[0].id != "commentFormGroup" && validControls[1].id != "commentFormGroup" && validControls[2].id != "commentFormGroup") { 
     modalSaveBtn.disabled = false; 
     } 
    } 
    else { 
     modalSaveBtn.disabled = true; 
    } 
    }, 50); 
} 

Я называю эту функцию на каждом поле в форме, используя нг-изменения. Это else if в середине - это то, как я выполняю то, о чем вы просите. commentFormGroup не требуется в моем коде. Я проверяю, есть ли (1) только три допустимых поля и (2) ни одно из этих допустимых полей не является необязательным полем, тогда кнопка должна быть включена.

В вашем случае у вас могут быть две функции, называемые ng-change, по одной для каждой кнопки, или вы можете указать, когда нужно отключить, а другой - включен.

В качестве альтернативы вы можете отобразить индивидуальное сообщение об ошибке вместо отключения кнопки. Надеюсь, это поможет.