繰り返されるパスワードを検証するための AngularJs メソッド (2 種類)

高洛峰
リリース: 2016-12-05 11:19:01
オリジナル
1358 人が閲覧しました

この記事では、angularjs で繰り返されるパスワードを検証するための 2 つの方法を紹介します。具体的な方法の詳細は以下のとおりです:

最初の方法:

<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的取反*/
};
});
ログイン後にコピー

これは単純に 2 つの ng-model の値が等しいかどうかを判断するためです。等しくない場合は、 ng-show コマンドで制御された情報は表示されません。

しかし、この方法は非常に単純ですが、私がより深刻だと思う欠陥があります。この「パスワードの不一致」は ngFormController の内部には影響しません。つまり、ngFormController の $invalid では、パスワードが 2 回間違ってもエラーとはみなされないため、パスワードが 2 回間違っても、最後の送信ボタンはクリックできます。

AngularJSの命令ng-maxlengthなどを参照してくださいが、$invalid検出の原因になる可能性があるので、上記の問題を解決するには、2つのパスワードが一致しているかどうかを検証するカスタム命令を作成するのも方法の1つだと思います。

/*指令创建*/
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)"/>
ログイン後にコピー

このように、最初の方法の判定と組み合わせることで、繰り返されるパスワードを完全に検証できます。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!