Heim > Artikel > Web-Frontend > AngularJs-Methoden zur Überprüfung wiederholter Passwörter (zwei Typen)
In diesem Artikel werden zwei Methoden zur Überprüfung wiederholter Passwörter in AngularJS vorgestellt. Die spezifischen Methodendetails lauten wie folgt:
Die erste:
<label for="password">密码</label> <input id="password" name="password" type="password" ng-model="user.password" required> <label for="repassword">重复密码</label> <input id="repassword" name="repassword" type="password" ng-model="repassword" required> <span style="color:red" ng-show="user.password!=repassword">两次密码不一致</span> <input type="submit" class="btn btn-primary btn-lg" value="SAVE" ng-disabled="submit(userForm)"/> /*JS*/ app.controller("main",function($scope){ $scope.submit=function(ngFormController){ return ngFormController.$invalid; /*valid的取反*/ }; });
Dies dient lediglich der Beurteilung der beiden NG-Modelle Unabhängig davon, ob die Werte gleich sind, werden die vom Befehl ng-show gesteuerten Informationen angezeigt. Wenn nicht, werden die vom Befehl ng-show gesteuerten Informationen angezeigt. Wenn nicht, werden sie ausgeblendet.
Obwohl diese Methode sehr einfach ist, weist sie einen Fehler auf, der meiner Meinung nach schwerwiegender ist: Diese „Passwortinkonsistenz“ hat keinen Einfluss auf die Interna von ngFormController. Mit anderen Worten: Selbst wenn das Passwort zweimal falsch ist, kann die endgültige Schaltfläche „Senden“ immer noch angeklickt werden, da $invalid von ngFormController zweimal falsche Passwörter nicht als Fehler betrachtet.
Beziehen Sie sich auf die AngularJS-Anweisungen ng-maxlength usw., aber sie können zu einer $ungültigen Erkennung führen. Um das oben genannte Problem zu lösen, denke ich, dass eine Möglichkeit darin besteht, eine Methode zur Überprüfung zu erstellen Passwort zweimal. Konsistente benutzerdefinierte Anweisungen.
/*指令创建*/ app.directive('equals',function(){ return{ require:'ngModel', link:function(scope,elm,attrs,ngModelCtrl){ function validateEqual(myValue){ var valid = (myValue === scope.$eval(attrs.equals)); ngModelCtrl.$setValidity('equal',valid); return valid ? myValue : undefined; } ngModelCtrl.$parsers.push(validateEqual); ngModelCtrl.$formatters.push(validateEqual); scope.$watch(attrs.equals,function(){ ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue); }) } } }); <!--html--> <label for="password">密码</label> <input id="password" name="password" type="password" ng-model="user.password" required> <label for="repassword">重复密码</label> <input id="repassword" name="repassword" type="password" ng-model="repassword" <!--注意这里将要使用我自定义的指令-->equals="user.password" required> <span style="color:red" ng-show="user.password!=repassword">两次密码不一致</span> <input type="submit" class="btn btn-primary btn-lg" value="SAVE" ng-disabled="submit(userForm)"/>
Auf diese Weise können wiederholte Passwörter in Verbindung mit der Beurteilung der ersten Methode perfekt überprüft werden.