Ich verwende eine jQuery-Funktion, um Formulare automatisch zu verarbeiten und Fehler anzuzeigen, so wie sie mit jQuery auftreten. Ich verwende auch Bootstrap 3.Wie funktioniert eine jQuery-Eingabevalidierungsfunktion mit Angular-Vorlagen?
(function() {
// Form Processing
$('input').each(function() {
var $this = $(this);
$this.on('input', function() {
if ($this.val().length === 0) {
if ($this.attr('required')) {
$this
.parent('div.control-group')
.addClass('has-error')
.end()
.siblings('p.text-danger')
.empty()
.text('This field is required');
} else {}
} else {}
});
});
})();
Grundsätzlich überprüft dies, ob ein Feld erforderlich ist. Wenn das Feld nicht gültig ist, wird eine einfache Fehlermeldung angezeigt. Es funktioniert auch wirklich gut.
Hier ist eine grundlegende Vorlage, die diese Arbeit macht:
<div class="control-group>
<input type="email" required>
<p class="text-danger"></p>
</div>
Allerdings, wenn ich Angular Vorlagen verwenden, wird der Code nicht auftreten, da das DOM nicht vor der Hand geladen wird. Ich denke, der richtige Weg zum Handeln wäre die Schaffung einer Angular-Direktive für diesen Code. Ich habe ein paar Fragen dazu:
- Wo stelle ich das Derivat? Sollte es so etwas wie
myapp.run
sein? - Bin ich falsch in meiner Annahme, ein Derivat zu erstellen? Gibt es einen besseren Weg dies zu tun, so dass es mit Angular funktioniert?
Danke.
eine gemeinsame Klasse ('required') auf alle diese Eingaben und verwenden Sie dann einen Delegierten. '$ (Dokument) .on ('. erforderlich', 'Eingabe', Funktion() {...})'. Wenn Sie jedoch ein Framework verwenden, sollten Sie bei seinem Ansatz bleiben. Mehr Sie gehen außerhalb Framework-Umgebung, um Zeug zu erreichen, mehr Ihr fragiler Code wird – Rajesh
Dies ist völlig falsche Ansatz, wenn eckig bereits in Form Validierung eingebaut hat – charlietfl
Nehmen Sie jQuery und bootstrap.js aus Ihrem Projekt und lesen [Denken in eckigen, wenn ich habe ein jQuery Hintergrund] (http://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-background) – charlietfl