javascript-toString().length上有零且只有零的数字始终返回0

我正在制作一个页面,该页面接受来自用户的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
上一篇:Javascript-为什么v-show和v-if立即响应对象中的布尔更改,而不响应数组中的布尔更改?


下一篇:javascript-使用不再更新的插件