#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.