2017-07-05 8 views
0

Ich versuche, mein Eingabefeld sofort zu validieren, nachdem das Eingabefeld unscharf geworden ist. Aber einige, wie die Validierung Nachricht erscheint nur, wenn ich etwas in ein Textfeld schreiben und dann löschen.Angular 2 Überprüfung des benutzerdefinierten Formulars funktioniert erst, nachdem der Benutzer den Textbox-Wert gelöscht hat

Hier ist meine HTML-Vorlage;

<input type="text" 
 
placeholder="First Name" 
 
class="form-control" 
 
name="firstName" 
 
id="firstName"          
 
[ngModel]="typeValidation.firstName" 
 
#firstName="ngModel" 
 
(blur)="firstNameBlur(firstName.value)" 
 
autofocus 
 
required> 
 
              
 
<small [hidden]="firstName.valid || (firstName.pristine && !f2.submitted)" class="text-danger"> 
 
    First Name is required. 
 
</small>

Hier ist meine Typoskript;

firstNameBlur(value:string) { 

    if (value == "" || value == undefined) { 
     return false; 
    } 
    else { 
     return true; 
    } 

} 

Bitte helfen Sie mir. Vielen Dank im Voraus!

Antwort

1

Um es wie erwartet arbeiten, können Sie untouched statt pristine, wie diese verwendet werden soll:

<small [hidden]="firstName.valid || (firstName.untouched && !f2.submitted)" 
     class="text-danger"> 
    First Name is required. 
</small> 

oder mit * ngIf (IMHO, ist es wirklich besser):

<small *ngIf="firstName.invalid && (firstName.touched || f2.submitted)" 
     class="text-danger"> 
    First Name is required. 
</small> 

WORKING DEMO

Beachten Sie, dass Sie (blur) nicht benötigen.

+0

Vielen Dank! das funktioniert ganz gut! –

0

Ich bin mir nicht sicher, warum Sie an das Blur Event gebunden sind? Das erforderliche Attribut sollte dazu führen, dass Angular das erforderliche Feld automatisch überprüft, wenn der Benutzer das Feld verlässt.

Und was macht dieser Code? Da die firstNameBlur() auf ein Ereignis ausgeführt wird ... die Rückgabe von false setzt preventDefault. (Siehe diesen Link: https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) Ist das was beabsichtigt?

Versuchen Sie, das Blur-Ereignis zu entfernen und sehen Sie, ob es ohne es funktioniert. Wenn dies der Fall ist, benötigen Sie die firstNameBlur-Methode nicht.

+0

wird das Feld nicht automatisch validiert, wenn der Benutzer das Feld verlässt. aber es validiert nur, wenn Benutzer etwas darin eingeben und dann löschen. Wenn der Benutzer das Feld leer lässt, ohne etwas einzugeben, wird es nicht validiert. Ich möchte validieren, wenn Benutzer das leere Feld verlässt, entweder das Feld manipuliert wird oder nicht! –

+0

Ja, so funktioniert die Standardvalidierung normalerweise. Haben Sie das Blur-Ereignis entfernt und es funktioniert immer noch nicht? Können Sie einen Plünderer bauen, um Ihr Problem zu demonstrieren? – DeborahK

+0

Ja, ich habe versucht, das Blur-Ereignis zu entfernen. aber es funktioniert immer noch nicht! –

Verwandte Themen