2016-07-31 8 views
1

私はAngularJSディレクティブを使用して、フォームproductFormを検証しようとするので、私は試してみてください。このようにAngularJS検証の問題

<form id="productForm" name="productForm" novalidate> 
    <div style="width: 100%; margin-top: 15px; float: right; "> 
       <label style="width:103px;float:right" class="col-sm-2" for="ProductName">ProductName: </label> 

       <div style="float:right" class="col-sm-5"> 
        <input ng-required="true" class="form-control" style="float:right" type="text" id="ProductName" name="ProductName" ng-model="modal.ProductName" value="" /> 
       </div> 
       <div style="float:right" class="col-md-7" > 
        <span class="help-block" ng-if="productForm.ProductName.$error.required && productForm.ProductName.$dirty && productForm.ProductName.$touched "> Name is Must</span> 
       </div> 

    </div> 
    <button class="btn" style="background-color: #ed9c28;" type="button" ng-click="Save()" ng-disabled="productForm.$invalid">Save</button> 
</form> 

問題がある:ユーザーがProductNameに触れると、それがフォーカスを失ったときに、必要なメッセージを表示されませんでした(ユーザーの入力時に表示され、入力からテキスト全体をクリアしていますが、入力が空のときにエラーメッセージを表示したい場合)、productForm.ProductName.$touchedng-ifで実行しようとしましたそれは動作しません、どうすればいいですか?

+0

これを行う上で何が起こっているかを理解するために: ''


                            
    developer033
                                
                            
                        
                    

答えて

0

私は汚い$のチェックを省略し、代わりに$invalid$toucedをチェックします:

ng-if="productForm.ProductName.$invalid && productForm.ProductName.$touched" 
+0

それは答えではありません。 'ngShow'と' ngIf'はどちらもこのケースで動作します( 'ngShow'は使用しないでください)。 – developer033

+0

@developer033どのような場合でもなぜngShowは使用されないのですか?解決策は、汚れたチェックを省略し、ng-showを使用するノートをヒントに過ぎないことです。しかし、たぶんあなたは私を納得させることができます... –

+0

まあ、 'ngShow'は悪い習慣とみなされます。 'ngIf'が推奨されますが、' ngShow'を使うことができます。彼の問題は 'ngIf'ではないことをここで指摘しています。 – developer033