1

次のようにAngularでエラー検証を行っています。カスタムエラー検証メッセージが表示されない

<select ng-model = "color" class = "form-control" 
    ng-options = "color as color for color in colors" required> 
    <option value="">Choose an option</option> 
</select> 

<span ng-show="serviceForm.color.$error.required"> My custom error message </span> 

エラー確認は期待どおりに表示されますが、カスタムメッセージは表示されません。代わりに、私は以下を取得します。

enter image description here

これは良さそうに見えますが、はどのように私は私のカスタムメッセージで置き換えますか?私はそれがどこから来ているか知っていればそれは私がそれを編集することができますクールだろう。また

私は

<option value="">Choose an option</option> 

を取り出し、それが常に表示された場合、私のカスタムメッセージが表示されます。どうしてこれなの?

+0

あなたは、実行可能デモ/スニペットまたは[JSFiddle](https://jsfiddle.net/)を共有することはできますか? – Rayon

答えて

0

Working Plnkr

あなたは、提出フォームにspaceとその特定のフィールドのHTML5検証メッセージを交換することができます。メッセージの表示を妨げ、他のHTML5検証メッセージに影響を与えません。

はJavaScript:

$scope.ValidateInput = function(){ 
    var email = document.getElementById("colorId"); 

  if (email.validity.valueMissing) { 
     email.setCustomValidity(" "); 
  } else { 
     email.setCustomValidity(""); 
    } 
    } 

HTML

<form name='serviceForm'> 
     <select name='color' id='colorId' ng-model = "color" class = "form-control" 
    ng-options = "color as color for color in colors" required> 
     <option value="">Choose an option</option> 
     </select> 

    <span ng-show="serviceForm.color.$error.required"> My custom error message </span> 
    <input type='submit' ng-click='ValidateInput()' value='Submit'> 
</form> 
+0

カスタムエラーメッセージは常にplnkrに表示されます。それはデフォルトで表示されるべきではありません –

+0

私の答えとplunkrを更新しました。それを確認してください。 –

2

このメッセージはおそらくform validatenのようにブラウザから届きます。

あなたはそれを無効にするには、フォームにnovalidate属性を追加する必要があります。

<form novalidate> 
+0

ありがとうございますが、これは特にクライアント側の検証を無効にするため、これを行う必要はありませんか? –

+0

妥当性確認までにフォームが提出されないようにする –

+0

独自の検証を追加したので、検証の前に提出するべきではありません。 – str

0
<select ng-model = "color" class = "form-control" name="lstColor" 
    ng-options = "color as color for color in colors" data-msg-required="Please select color from list" required> 
    <option value="">Choose an option</option> 
</select> 

上記試してみて、希望は

+0

これは解決しませんでした –

+0

プラグインの検証に問題があるかもしれません。正しく参照されているかどうか。上記のすべてを拡張JS形式で書くことができます。 – Own

+0

if($(form).valid()== false){$(form).validate {{{{lstColor:{required:true}}、メッセージ{lstColor:{必須: "色を選択してください"}}); – Own

0

<form novalidate>は、これらのメッセージを回避するために使用することができ、あなたの問題を解決します。

oninvalidイベントが発生したときにも、setCustomValidity機能を使用してカスタムメッセージに置き換えることができます。

同様:

<input class="form-control" type="email" required="" placeholder="username" oninvalid="this.setCustomValidity('Please Enter valid email')"></input> 

参考説明here

+0

は、novalidateを無効にするクライアント側の検証を一緒に形成しませんか? –

+0

この方法の問題点は、オプションを選択してもエラーの検証が認識されず、依然として1つを選択するように依頼することです。 –

関連する問題