У меня есть моя форма, как это:
<form name="myForm">
<input name="myText" type="text" ng-model="mytext" required />
<button disabled="{{ myForm.$invalid }}">Save</button>
</form>
Как вы можете видеть, кнопка отключена, если ввод пуст, но не возвращается обратно к включенному, когда он содержит текст. Как я могу заставить это работать?
Ответы:
Вам нужно использовать имя вашей формы, а также ng-disabled: Вот демоверсия по Plunker
источник
<div ng-form="myForm"> ... stuff here .. </div>
. Хотя, если вы отправляете значение из входных данных, при нажатии кнопки я настоятельно рекомендую использовать<form/>
тег, если только по какой-либо другой причине он позволяет пользователю нажать [ENTER] и отправить форму. Но это также, вероятно, представляет собой лучшую практику из-за таких вещей, как проблемы доступности.Добавить к этому ответу. Я только что узнал, что он также сломается, если вы используете дефис в имени формы (Angular 1.3):
Так что это не сработает
источник
myForm.$invalid
все еще должно работать, поэтому в вашем случае, я думаю,my_formset_name0.$invalid
должно работать.Выбранный ответ правильный, но у кого-то, как я, могут возникнуть проблемы с асинхронной проверкой при отправке запроса на серверную сторону - кнопка не будет отключена во время обработки данного запроса, поэтому кнопка будет мигать, что выглядит довольно странно для пользователей.
Чтобы аннулировать это, вам просто нужно обработать состояние ожидания $ формы:
источник
!myForm.$valid
это обрабатывает асинхронные вопросы, ожидающие решения, а также. itnext.io/valid-and-invalid-in-angular-forms-61cfa3f2a0cdЕсли вы используете Reactive Forms, вы можете использовать это:
источник
(click)
и[disabled]
не являются действительным AngularJS кода, равно как и химически активными форм часть каркаса AngularJS. «Angular - это имя для Angular сегодня и завтра. AngularJS - это название для всех версий Angular v1.xМы можем создать простую директиву и отключить кнопку, пока все обязательные поля не будут заполнены.
Для дополнительной информации щелкните здесь
источник
ng-disabled
в угловых 1.x и[disabled]
угловых 2 | 4.x, которые гораздо лучше проверены, чем эта? Во-вторых, зачем иметь директиву, ограниченную формой для отключения вложенной кнопки, это супер специфично. Плохо продуманное решение ИМО.Если вы хотите быть немного более строгим
источник