Ich habe ein einfaches HTML-Formular mit normaler Texteingabe. ng-minlength
, ng-maxlength
und ng-pattern
eckig built-in form input directives sind am Eingang eingestellt.Angularjs Formularbestätigungsauftrag
Problem: ng-pattern
Prüfung wird vor der Längenprüfung von ng-minlength
und ng-maxlength
durchgeführt.
Frage: Wie kann ich die Standard-Prüfreihenfolge ändern: d. H. Zuerst nach der Länge suchen, dann Musterprüfung anwenden?
Beispiel:
<body ng-app>
<div>
<form name="myForm">
Name: <input name="name" type="text" ng-model="name" ng-minlength="3" ng-maxlength="16" ng-pattern="/^\w+$/"/>
<div ng-show="myForm.name.$dirty && myForm.name.$invalid">
<span ng-show="myForm.name.$error.pattern">Pattern error</span>
<span ng-show="myForm.name.$error.minlength || myForm.name.$error.maxlength">Length error</span>
</div>
<br/>
<input type="submit" value="Submit">
</form>
</div>
</body>
Aktuelles Verhalten:
- eingeben "#" - siehe "Pattern Fehler"
- eingeben "###" - siehe "Pattern Fehler"
Gewünschtes Verhalten:
- eingeben "#" - siehe "Längenfehler"
- eingeben "###" - siehe "Pattern Fehler"
FYI, bezogen jsfiddle.
Vielen Dank im Voraus.
Siehe https: //github.com/angular/angular.js/pull/8267 – flup