我正在制作一个页面,该页面接受来自用户的4位数字(恰好是4位数字)的图钉.这样的事情.
<input type="number" ng-model="passCode" class="form-control" onpaste="return false" id="passCodeField" ng-disabled="!enablePassCode" ng-change="onInputPasscode()" ng-keypress="onKeyPressPasscode($event)"/>
onKeyPressPasscode函数
$scope.onKeyPressPasscode = function($event) {
if(isNaN(String.fromCharCode($event.which || $event.keyCode))){
$event.preventDefault();
}
}
onInputPasscode()函数:
$scope.onInputPasscode = function() {
if ($scope.passCode.toString().length > 4){
$scope.passCode = $scope.passcode;
}
if($scope.passCode.toString().length == 4) {
$scope.passcode = $scope.passCode;
$scope.disableContinue = false;
session.put('pinFlow',true);
} else {
console.log("current length - " + $scope.passCode);
$scope.disableContinue = true;
session.put('pinFlow',false);
}
}
当输入全为零时,这将失败.即当前长度没有更新,因此允许用户输入他想要的多个零.如何将4位数的零作为输入并仍然满足我的检查要求?
角度为1.5.8v.而且我不是AngularJS的专家.因此,任何帮助将不胜感激.另外,请让我知道是否需要其他信息.我将相应地更新答案.
提前致谢.
解决方法:
输入类型设置为number的输入是不可能做到这一点的.
当用户输入数字0001时,实际上是1.
诸如PIN之类的东西应使用设置为text的类型进行处理.
然后,您可以使用正则表达式进行验证.
要只允许四位数,不能多也不能少,请使用以下正则表达式:
^\d{4,4}$
在JavaScript中,使用此正则表达式测试字符串,如下所示:
/^\d{4,4}$/.test('1234')
// => true
/^\d{4,4}$/.test('123456')
// => false
/^\d{4,4}$/.test('12')
// => false