Как принудительно сделать элемент управления необязательным в кнопке отправки

#angularjs #ng-messages

#angularjs #ng-сообщения

Вопрос:

У меня есть текстовое поле A и две кнопки B amp; C в форме.
Если я ничего не заполняю в текстовом поле A

  • Когда я нажимаю кнопку B, на ней должно быть написано «Требуется».
  • Когда я нажимаю кнопку C, она не должна указывать «требуется».

HTML-ФАЙЛ

 <form name="nm_eventform" novalidate> 
 <input type="text" ng-model="md_eventname" name="nm_evtname" required />
   <div ng-messages="nm_eventform.nm_evtname.$error" role="alert">
     <div ng-message="required" class="divMasterMsg">Event Name is required</div>
   </div> 
 <button type="submit">B</button>
 <button type="submit" ng-click="ButtonC()">C</button>
</form>
  

Поскольку я сделал это обязательным, мне не нужно ничего писать в ButtonB(). Поскольку я хочу подавить обязательное условие в ButtonC(), поэтому я использую $setValidity, но это не делает мою форму действительной.

JS-файл

 $scope.ButtonC= function () {        
        $scope.nm_eventform.nm_evtname.$setValidity('required', false);        
        if ($scope.nm_eventform.$valid) {    
        }
}
  

Я пробовал ng-required, но это не подходит для моего случая.

Ответ №1:

Вам нужно использовать ng-required вместо required нравится ng-required="{{editing == false ? true : false}}" и изменить значение true или false в соответствии с вашим событием нажатия кнопки.

     <form name="nm_eventform" novalidate> 
     <input type="text" ng-model="md_eventname" name="nm_evtname" ng-required="{{editing == false ? true : false}}" />
       <div ng-messages="nm_eventform.nm_evtname.$error" role="alert">
         <div ng-message="required" class="divMasterMsg">Event Name is required</div>
       </div> 
     <button type="submit">B</button>
     <button type="submit" ng-click="ButtonC()">C</button>
    </form>

**For Js File:**

$scope.ButtonC= function () {        
        $scope.editing  = true;
}
  

Комментарии:

1. Как только я сделал это ng-required = false в ButtonC согласно вашему примеру, и если я нажму кнопку B, то также обязательное условие останется ложным. В этом случае поле всегда становится необязательным. Мне нужна кнопка B, чтобы сделать ее обязательной, и кнопка C, чтобы сделать необязательной.

2. Вам нужно изменить значение редактирования false при событии нажатия кнопки B.