2016-11-24 6 views
1

Ich habe ein erforderliches <select> Feld:„Erforderlich“ Validierung nicht funktioniert in <select> mit Standardwert

<select name="service_id" class="Sitedropdown" style="width: 220px;" 
     ng-model="ServiceID" 
     ng-options="service.ServiceID as service.ServiceName for service in services" 
     required> 
    <option value="">Select Service</option> 
</select> 

Wenn es leer ist, sollte das Formular eine Nachricht „Select Service“ Fehler anzuzeigen. Hier ist eine funktionierende plunker.

Es funktioniert gut, wenn Sie absichtlich die leere Option auswählen. Aber wenn Sie die Seite neu laden, ist die service_id standardmäßig leer und es gibt keine Validierung. Wie kann AngularJS den Standardwert validieren?

+0

Du hast Recht.. Ich werde die richtige Antwort posten. – lucasnadalutti

Antwort

2

Ihr Code:

ng-show="myForm.service_id.$dirty && myForm.service_id.$invalid "

Das bedeutet - wenn Wert verschmutzt ist (geändert wurde) und ist ungültig entfernen erste und Sie bekommen, was Sie wollen

+0

Sie hatten Recht Jetzt fühle ich mich dumm: \ – enkryptor

+0

@enkryptor Ich habe das gleiche Problem können Sie mir helfen? –

+1

@Wari sSarwar alles, was ich tun muss, ist die 'myForm.service_id. $ dirty' -Klausel zu entfernen – enkryptor

1

Validierungsprüfungen werden nur ausgeführt, nachdem der an ng-model gebundene Wert mindestens einmal geändert wurde, oder, wenn der Benutzer versucht, das Formular zu senden. Wenn dies nicht der Fall wäre, würden alle erforderlichen Felder eines Formulars direkt nach dem Laden der Seite mit einem Fehler angezeigt, was ein ziemlich unerwünschtes Verhalten wäre.

Deshalb wird der Fehler nur angezeigt, wenn Sie etwas anderes auswählen und dann wieder auf den leeren Wert zurücksetzen.

+0

Falsch. Validierung läuft beim Laden der Seite. Http://pnnr.co/edit/ZCxv9cAlXxvPomOY6oy0?p=preview. Aber ja, Fehler werden normalerweise nicht beim Laden der Seite angezeigt. –

Verwandte Themen