Heim  >  Artikel  >  Web-Frontend  >  AngularJs-Methoden zur Überprüfung wiederholter Passwörter (zwei Typen)

AngularJs-Methoden zur Überprüfung wiederholter Passwörter (zwei Typen)

高洛峰
高洛峰Original
2016-12-05 11:19:011358Durchsuche

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(&#39;equals&#39;,function(){
return{
require:&#39;ngModel&#39;,
link:function(scope,elm,attrs,ngModelCtrl){
function validateEqual(myValue){
var valid = (myValue === scope.$eval(attrs.equals));
ngModelCtrl.$setValidity(&#39;equal&#39;,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.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn