2016-08-30 4 views
0

Angularjs 1では、ユーザー入力に対するORの送信の検証の例が多数あります。 このプロジェクトでは、ユーザーの送信ボタンのみで検証メッセージを更新する必要があります。つまり、USER INPUTは検証メッセージ(クライアント仕様)を更新しません。Angularjs 1 - 送信ボタンの送信時に確認メッセージを表示/更新します(ユーザー入力では変更されません)

例:あなたはあなたの検証を行うに進み

<form name="yourForm" ng-controller="YourController as yourCtrl" ng-submit="yourCtrl.yourmethod(data)" novalidate> 

http://embed.plnkr.co/N0rRBS8AXU3jQJjQidIT/

+0

エラーメッセージの表示方法のコード例を表示できますか? ng-message、ng-if、...を使用していますか? – GPicazo

+0

すでに例を追加しています。最初の提出の後、それはvalitionメッセージが表示されます。 ユーザーが入力値を更新すると、エラーメッセージが更新されます(双方向バインディングが動作しています)。しかし、この仕様では、送信ボタンをクリックして更新する必要があります – PSA

答えて

1

とてもあなたがあなたのhtmlでこのようNOVALIDATE必要なHTMLの検証をオフにするには、あなただけのコントローラ上の検証を必要とするようですお使いのコントローラにここ

+0

可能であれば、角度のフォーム検証構造を使用したいと思います。私があなたの視点を理解する限り、私は古典的なフォームのバリデーション手法を実装するつもりです(このためには、エラーのためにvarsコントロールを作成し、ng-ifなどに公開する必要があります)。 – PSA

+0

ng-modelに関連付けられているフィールドの値を変更すると、入力したタイプとその他の検証(必要な場合など)が検証され、ng-invalidクラスまたはng-validがそのフィールドに適用されます。すべてのフィールドがng-validであれば、$ validがtrueになります。送信ボタンをクリックする前に起こるすべて。サーバーから追加の検証が必要な場合は、http http呼び出しを行う必要があります。これはコントローラにあります。無効なフィールドがあっても送信ボタンをクリックするようにしたいと思っていました。そうすれば、コントローラのng-invalidクラスをフィールドごとにテストできます。 – Khelmo

+0

これは唯一の方法です。すべての角型検証手法を削除し、コントローラ上のすべてのものを、エラーを制御するために追加VARで作成します...ありがとう – PSA

0

は私のオプションです:

(function(){ 
 
    'use strict'; 
 
    var app = angular.module('sample', []); 
 
    
 
    
 
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="sample"> 
 
    
 
    <form name="userRegister" novalidation> 
 
     
 
     <div ng-messages="userRegister.name.$error.required" 
 
      ng-if="submitted "> 
 
      <p ng-message="required">I need your name Sr</p>  
 
     </div> 
 
     
 
     <input type="text" ng-required name="name" ng-model="user.name"> 
 
     
 
     
 
    <input value="Send" type="submit" ng-click="submitted=true"/> 
 
    </form> 
 
    
 
</div>

関連する問題