2014-10-02 7 views
15

Ich möchte verhindern, dass der Benutzer auf die Schaltfläche "Registrieren" klicken, wenn die Felder nicht korrekt sind. Ein Teil davon ist, dass bestimmte Felder ausgefüllt werden müssen. Aber die Bedingung fängt an, ein bisschen lang zu werden:Deaktivieren Sie eine Schaltfläche, wenn mindestens ein Eingabefeld leer ist mit ngDisabled

<button class="btn btn-success" ng-click="register()" 
    ng-disabled="signInForm.$invalid || form.firstName.length==0 || 
    form.lastName.length==0 || form.email.length==0 || 
    form.password.length==0 || form.passwordBis.length==0">Register</button> 

Wie kann ich das vereinfachen?

+1

Sie müssen nur zur Verfügung zu stellen 'required' Attribut für alle Eingaben und tun'

Antwort

25

Ich denke, was Sie brauchen, ist required Attribut für Ihre Eingabefelder in Ihrem Formular, so dass bis die Felder ausgefüllt sind in das Formular signInForm wird ungültig sein. In ähnlicher Weise könnten Sie auch andere Validierungsattribute für die Eingaben bereitstellen.

Beispiel: -

<input type="text" ng-model="firstName" name="firstName" required /> 
    <input type="text" ng-model="lastName" name="lastName" required /> 
    <input type="email" ng-model="email" name="email" required /> 
    ... 
    ... 
    <button class="btn btn-success" ng-click="register()" 
      ng-disabled="signInForm.$invalid">Register</button> 
+0

Sieht so aus als hättest du recht: http://jsfiddle.net/mgmp6L0b/ Aber in meinem Fall funktioniert es nicht ... Sieht so aus, als ob ich das nicht benutze gleicher Rahmen ... Ich habe AngularJS v1.2.25, und die E-Mail: "toto @ to" ist in meinem Code gültig und nicht im JSFiddle-Beispiel oben. Auch in meinem Code wird das Verhalten nicht geändert ... Irgendein Gedanke ? – Elfayer

+0

Ich kann Geige nicht zugreifen können Sie in einem Plunkr einfügen.Ich weiß, es gab früher ab ug mit email validator pattern ... – PSL

+0

Ich verstehe, was Sie sagen, Ihr Problem hat mehr mit der HTML5 E-Mail-Validierung und eckigen zu tun Wenn Sie das gleiche in der Demo in der offiziellen Dokumentation tun, werden Sie das gleiche sehen. https://docs.angularjs.org/api/ng/input/input%5Bemail%5D Sie können Ihr eigenes Muster verwenden, indem Sie 'ng-pattern' liefern – PSL

Verwandte Themen