Wie man ng-click zulässt, wenn die Schaltfläche in Angularjs deaktiviert ist

8

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.

    
smstromb 03.04.2014, 17:54
quelle

4 Antworten

6

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.

    
Alexander Kalinovski 03.04.2014, 18:52
quelle
3

Anstatt die Eingabe auf disabled zu setzen, setzen Sie sie auf readonly . Dadurch können ng-Klicks weiterhin funktionieren.

    
Coder 29.01.2017 13:13
quelle
2

Sie könnten es in ein anderes Element einfügen:

%Vor%

CSS:

%Vor%     
dave 03.04.2014 18:22
quelle
2

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.

    
AlikElzin-kilaka 03.06.2015 06:56
quelle