重複パスワードを確認するAngularJsメソッド(2)

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

この記事では、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モデルの値が等しいかどうかを判断するだけで、ng-showコマンドで制御される情報が表示され、情報が隠されます。

しかし、この方法は非常に簡単ですが、もっと深刻だと思われる欠点があります。この「パスワードの不一致」はngFormControllerの内部には影響しません。 つまり、パスワードが2回間違っていても、ngFormControllerの$ invalidは2つのパスワードが間違っているとは考えていないので、最後のsubmitボタンをクリックすることができます。

AngularJSの指示ng-maxlengthなどを参照すると、$検出が無効になる可能性があるため、上記の問題を解決するために、2つのパスワードが一貫していることを確認するためのカスタム命令を作成する方法があります。


/*指令创建*/
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)"/>

このようにして、第1の方法の判断に加えて、重複パスワードを完全に検証することができる。

上記のAngularJsの小さなバージョンは、私は誰も助けて欲しい、質問があれば、メッセージを残してください、Xiaobianは時間内にあなたに返信します。 Script Houseのウェブサイトへのご支援をありがとうございます!


1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ