Ich habe folgendes Formular:
%Vor%Ich versuche, die Klasse 'has-error' in das Eingabefeld einzufügen, das ungültig ist, nachdem der Benutzer entweder etwas eingegeben hat oder die Übergabeschaltfläche gedrückt hat, während die Eingabe noch unverändert ist. Ich habe ng-disabled zu dem Submit-Button hinzugefügt, um die Formular-Submission zu deaktivieren, aber ich möchte immer noch, dass der ng-click ausgelöst wird, um den hasSubmitted-Bereich zu ändern. Das Problem ist, dass ng-disable auf der Schaltfläche auch den ng-click deaktiviert hat.
Ich weiß, ich könnte immer ng-submit auf dem Formular verwenden, Validierung in meinem Controller durchführen und dann eine Ajax-Anfrage auslösen, aber mein Authentifizierungs-Framework erfordert, dass ich das Formular tatsächlich absende und den Browser umleite.
Nun, anstatt Hacks zu machen, wäre die sauberste Lösung, die Schaltfläche zu aktivieren und einfach mit der einfachen Direktive zu arbeiten:
%Vor%Also, was es tut, bindet es an das submit-Ereignis und wenn das Formular ungültig ist, verhindert es das Senden des Formulars. Wenn Sie das action-Attribut Angular nicht verwenden, behandelt es das automatisch und Sie können damit umgehen, aber im Falle einer angegebenen Aktion und eines normalen Sendens kann diese Anweisung sehr nützlich sein.
Und im Markup:
%Vor%Und wenn Sie ng-style oder ng-class verwenden, können Sie Ihren Button abhängig von Ihrem Formularzustand wie erwartet formatieren.
Ersetze button
durch div
. ng-click
wird ausgelöst, obwohl das div deaktiviert ist.
Siehe diesen Beitrag für weitere Details.
Übrigens, Sie müssten den Button-Stil für das div festlegen. Viel Glück.
Tags und Links angularjs forms validation angularjs-ng-click