2015-04-27 7 views
7

Ich möchte eine Fehlermeldung angezeigt werden, wenn der Benutzer auf Senden ohne Inhalt, und ich möchte die Übermittlungsschaltfläche deaktiviert werden. Ich kann entweder einen arbeiten, aber nicht beide gleichzeitig.Angularjs - wie NG-Nachricht erforderlich Fehler zu Anzeige und Deaktivieren der Eingabe Schaltfläche zur gleichen Zeit

Der folgende Code zeigt die Nachricht an, erlaubt aber einen leeren Todo-Eintrag.

<form name="todoForm" novalidate > 


    <div ng-messages="todoForm.new.$error" ng-if="todoForm.$submitted"><div ng-message="required">Add Your Item Below...</div></div><!--message appears until valid input is entered--> 

    <input type="text" name="new" placeholder="start typing..." autofocus data-ng-model="newTodo" required=""/> 

    <button input type="submit" ng-click="addTodo()" >Add To List</button><!--disables form if form not valid--> 

</form> 

Diese Version deaktiviert die Absenden-Button, sondern bringt die Nachricht nicht

<form name="todoForm" novalidate > 


    <div ng-messages="todoForm.new.$error" ng-if="todoForm.$submitted"><div ng-message="required">Add Your Item Below...</div></div><!--message appears until valid input is entered--> 

    <input type="text" name="new" placeholder="start typing..." autofocus data-ng-model="newTodo" required=""/> 

    <button input type="submit" ng-click="addTodo()" data-ng-disabled="todoForm.$invalid" >Add To List</button> 
</form> 

Ich nehme an, dies liegt daran, dass die Nachricht nicht angezeigt werden kann, wenn die Eingabe-Taste deaktiviert ist, weil nichts gewesen eingereicht?

Ich habe versucht mit $ deaktiviert und $ ungültig stattdessen, aber sie haben nicht funktioniert.

+0

, es sei denn ich etwas fehle, was ich von diesem erhalten, dass 'ng-if = "todoForm $ vorgelegt."' Steht in Konflikt mit 'ng- messages = "todoForm.new. $ error" '. Wenn "ng-if" im selben div vorhanden ist, wird der Text "ng-message =" required "" nicht angezeigt. Wenn ich "ng-if" entferne, erscheint die erforderliche Nachricht: http://plnkr.co/edit/8pE3jmBNYRpPSvyJA0ys?p=preview –

+0

ng-if = "todoForm. $ Submitted" steht in Konflikt mit data-ng-disabled = "todo.Form. $ ungültig" soweit ich sehen kann. Ihr Beispiel erzeugt nicht die ng-Nachricht, ist das nicht eine html5-Nachricht? – vtechmonkey

Antwort

1

Ich entfernte den Konflikt ng-if auf dem Element ng-message. Hier ist ein funktionierender Plunk, der den festen Code zeigt.

http://plnkr.co/edit/gL0GoFT47mSeydKReLuD

Meine Vermutung ist, dass Sie die ‚ngMessages‘ Modul als externe Abhängigkeit zu injizieren vergessen.

Sie können Ihren Code wie folgt beheben:

var app = angular.module('plunker', ['ngMessages']); 
+0

Vielen Dank, aber ich möchte nicht, dass die Nachricht beim Laden der Seite angezeigt wird, nur wenn der Benutzer zum Senden übergeht, ohne etwas einzugeben. Ich weiß, ich habe ngMessage arbeiten, wie ich es auf diese Weise arbeiten kann, – vtechmonkey

+0

Sie können einfach die $ Dirty verwenden, um das zu tun, habe ich die Plunk aktualisiert, um die Änderung zu reflektieren. –

+0

das funktioniert nicht, wenn der Benutzer nichts eingegeben hat, und drücken Sie einfach auf Senden. – vtechmonkey