Javascript maxlenght和ng maxlength似乎都不起作用

Javascript maxlenght和ng maxlength似乎都不起作用,javascript,html,angularjs,Javascript,Html,Angularjs,我的html文件中有以下输入: <input name="password" id="newPasswordConfirmation" ng-model="newPasswordConfirmation" type="number" inputmode="numeric" placeholder="" required minlength="8"

我的html文件中有以下输入:

 <input name="password" 
        id="newPasswordConfirmation" 
        ng-model="newPasswordConfirmation" 
        type="number" 
        inputmode="numeric" 
        placeholder="" 
        required 
        minlength="8" 
        maxlength="8" 
        autocomplete="off" 
        ng-maxlength="8" 
        autocorrect="off" 
        autocapitalize="off" 
        style="-webkit-text-security: disc; text-security: disc;"> 


我想将输入限制为8个algarism,但是当我在我的移动设备(android)上输入时,我可以继续输入超过8个algarism。为什么这不起作用?您如何设置此限制?

如注释中所述,
maxlength
不适用于数字输入。发件人:

maxlength:如果type属性的值为text、email、search、password, tel或url,此属性指定最大字符数 用户可以输入的(UTF-16代码单位)。其他控制 类型,则忽略它

以下是一个小指令,您可以使用它:

angular.module('myApp')。指令('maxLength',函数(){
返回{
限制:“A”,
链接:函数(范围、元素、属性){
var maxLength=attrs.maxLength | | false;
if(maxLength)元素.on('keydown-keypress-keypup-paste-propertychange',函数(e){
if(元素[0].value.length>=maxLength-1){
元素[0]。值=元素[0]。值。切片(0,maxLength)
}
})
}
}
});


角度.module('App',[]).controller('Ctrl',Ctrl);
函数Ctrl($scope){
$scope.model='test'
$scope.limitKeypress=函数($event,value,maxLength){
if(value!=undefined&&value.toString().length>=maxLength){
$event.preventDefault();
}
}
}
Ctrl.$inject=['$scope'];

可能重复的
maxlength
仅适用于文本、电子邮件、搜索、密码、电话或url类型的
。但是你可以创建一个指令,在数字输入上模仿
maxlength
。。我意识到将类型更改为文本,但保留inputmode数字也同样有效,因此可能不需要该指令。@AnaSequeira,请注意
inputmode
是关于显示哪个虚拟键盘,也就是说,它实际上并不阻止字段接受信件。它对带有物理键盘的桌面浏览器没有影响。也就是说,如果浏览器首先支持
inputmode
<代码>输入模式不再包含在规范中,标记为已过时。看见
   <div ng-app="App" ng-controller="Ctrl">
       <input type="text"
           ng-model="model" 
           ng-keypress="limitKeypress($event, model, 8)"
           placeholder="enter first 8 digits">
    </div>

    angular.module('App', []).controller('Ctrl', Ctrl);

    function Ctrl($scope) {
        $scope.model = 'test'

        $scope.limitKeypress = function ($event, value, maxLength) {
            if (value != undefined && value.toString().length >= maxLength) {
                $event.preventDefault();
            }
        }

    }
    Ctrl.$inject = ['$scope'];