2017-08-15 9 views

答えて

2

$pristineを使用してフォームが空であるかどうかを確認し、$invalidを使用してフォームにデータが入力されているかどうかを確認します(無効な値などが考えられます)。

<form name="myForm"> 
    <input type="email" name="email" ng-model="email" required /> 
    <button ng-click="signIn()" ng-disabled="myForm.$invalid || myForm.$pristine">Save</button> 
</form> 

フォームが有効になるまで送信ボタンが無効(クリック不可)になります。

EDIT

HTML5の検証でのみ検証するために、フォームにname属性を追加し、あなたが提出時に、それの有効性にアクセスすることができます。

<form name="myForm">...</form> 

$scope.signIn = function(){ 
    if ($scope.myForm.$valid){ 
     // do sign in logic here 
    } 
} 

は多分ロジックをインライン化

<input type="submit" value="Sign in" ng-click="myForm.$valid && signIn()"> 

のでsignInはBのみになります(それが動作するかどうか)あなたの送信ボタンを上最初の部分が真であれば呼び出されます。

EDIT 2

AngularJS docs hereで見つけた情報をもとに、あなたにも、次の試みることができる?:

<form name="myForm"> 
    <input type="email" name="email" ng-model="email" required /> 
    <button ng-click="signIn()" ng-disabled="signIn()">Save</button> 
</form> 

$scope.signIn = function() { 
    if ($scope.myForm.email.$error.required) { 
     // ... 
    } 
}; 

現在$scope.myForm.email.$error.required構文アプローチを以下の通りです。

$scope.myFormまたは$scope.myForm.emailを記録して、値を変更したときの結果を確認してください。

+0

上記のコードは、ユーザーがフォームに正しく記入するまで[送信]ボタンを無効にしますが、HTML5の検証エラーはフォームの送信時にのみ表示されます。送信ボタンを無効にするとここで正しいことはありません – user2713255

+0

HTML5検証のみを使用してもよろしいですか?カスタムエラーメッセージとデザインを提供してみませんか? HTML5検証は、現在組み込まれていない検証を追加する場合に制限します。さらに、それらのスタイルを変更したり、エラーメッセージを編集することはできません。しかし、それがあなたが望むものなら、私は解決策を考え出すことができます。 – Lansana

+0

私は本当にカスタマイズされたメッセージやデザインは必要ありません.HTML5の検証がパスした後にjsが呼び出されるようにする必要があります。私の要件はここではかなり制限されているので、ここでホイールを再開発することを避けて努力と時間を節約しようとしています – user2713255

関連する問題