提前感谢您的任何建议。我一直用这个把头撞在墙上。到目前为止,我已尝试使用ng-change,ng-keyup和ng-keypress。
HTML
<input type="password" ng-model="newPass" id="passwd" ng-keyup="validatePassword()"/>
控制器
$scope.validatePassword = function () {
var onecap = false;
var onenum = false;
var eightchars = false;
if ($scope.newPass.match(/^(?=.*[A-Z])/)) {
$scope.oneCap = true;
} else {
$scope.oneCap = false;
}
if ($scope.newPass.match(/^(?=.*\d)/)) {
$scope.oneNum = true;
} else {
$scope.oneNum = false;
}
if ($scope.newPass.match(/^[A-Za-z\d$@$!$#$^$($)$_$+%*?&]{8,}$/)) {
$scope.eightChars = true;
} else {
$scope.eightChars = false;
}
$scope.validated = onecap && onenum && eightchars;
};
无论出于何种原因,&#39;删除/退格&#39;除非删除键正在删除文本框中的最后一个字符,否则每个范围变量都会更新没有问题。
我意识到我可以使用单个字符串来测试密码要求;我将它们分开以向用户显示其密码缺少的部分。
答案 0 :(得分:0)
我通过阻止未定义变量与正则表达式的匹配来解决这个问题。
if ($scope.newPass !== undefined) {
validatePassword();
} else {
return false;
}