回答:
フォームの名前とng-disabledを使用する必要があります:ここにPlunkerのデモがあります
<form name="myForm">
<input name="myText" type="text" ng-model="mytext" required />
<button ng-disabled="myForm.$invalid">Save</button>
</form>
<div ng-form="myForm"> ... stuff here .. </div>
。入力から値を送信する場合は、ボタンを押したときに、ユーザーが[ENTER]を押してフォームを送信する以外に理由がない場合は、タグを使用することを強くお勧めし<form/>
ます。しかし、アクセシビリティの懸念などの理由から、これはより良い実践となる可能性もあります。
この回答に追加するには。フォーム名にハイフンを使用した場合にも機能しないことがわかりました(Angular 1.3):
したがって、これは機能しません:
<form name="my-form">
<input name="myText" type="text" ng-model="mytext" required />
<button ng-disabled="my-form.$invalid">Save</button>
</form>
myForm.$invalid
まだ機能するmy_formset_name0.$invalid
はずです。したがって、あなたの場合は、機能するはずです。
選択された応答は正しいですが、私のような誰かが、サーバー側に要求を送信する際の非同期検証に問題がある可能性があります-指定された要求の処理中にボタンが無効にされないため、ボタンが点滅し、ユーザーにとってかなり奇妙に見えます。
これを無効にするには、フォームの$ pending状態を処理するだけです。
<form name="myForm">
<input name="myText" type="text" ng-model="mytext" required />
<button ng-disabled="myForm.$invalid || myForm.$pending">Save</button>
</form>
!myForm.$valid
非同期の保留中の問題も処理するものを使用する必要があります。itnext.io/valid-and-invalid-in-angular-forms-61cfa3f2a0cd
リアクティブフォームを使用している場合、これを使用できます。
<button [disabled]="!contactForm.valid" type="submit" class="btn btn-lg btn primary" (click)="printSomething()">Submit</button>
(click)
および[disabled]
有効なAngularJSコードではありません、また反応性フォームはAngularJSフレームワークの一部です。 「Angularは、今日と明日のAngularの名前です 。AngularJS
単純なディレクティブを作成し、すべての必須フィールドが入力されるまでボタンを無効にすることができます。
angular.module('sampleapp').directive('disableBtn',
function() {
return {
restrict : 'A',
link : function(scope, element, attrs) {
var $el = $(element);
var submitBtn = $el.find('button[type="submit"]');
var _name = attrs.name;
scope.$watch(_name + '.$valid', function(val) {
if (val) {
submitBtn.removeAttr('disabled');
} else {
submitBtn.attr('disabled', 'disabled');
}
});
}
};
}
);
ng-disabled
Angular 1.xと[disabled]
angular 2 | 4.xにネイティブディレクティブがあり、これよりもはるかに適切にテストされているのに、なぜこれを行うのですか?第2に、ネストされたボタンを無効にするフォームをスコープとするディレクティブがあるのはなぜですか。考え抜かれたソリューションIMO。
<form name="myForm">
<input name="myText" type="text" ng-model="mytext" required/>
<button ng-disabled="myForm.$pristine|| myForm.$invalid">Save</button>
</form>
もう少し厳しくなりたいなら