AngularJS-阻止用户键入无效输入

AngularJS-阻止用户键入无效输入,angularjs,Angularjs,我有一个输入文本框,我想将输入限制为字母数字(0-9,a-z,a-z),最大长度为15 我正试着用angularjs来实现这一点 <input type="text" id="trackNumber" maxlength="15" ng-pattern="/^[a-zA-Z0-9]*$/" placeholder="" class="form-control" ng-model="trackNumber"/> “maxlength”设置为15时,用户无法在框中键入第16个字符

我有一个输入文本框,我想将输入限制为字母数字(0-9,a-z,a-z),最大长度为15

我正试着用angularjs来实现这一点

<input type="text" id="trackNumber" maxlength="15" ng-pattern="/^[a-zA-Z0-9]*$/" placeholder="" class="form-control" ng-model="trackNumber"/>

“maxlength”设置为15时,用户无法在框中键入第16个字符

类似地,当用户键入任何特殊字符或空格时,我希望防止“keypress”事件。目前,ng模式似乎并没有阻止用户输入无效的输入

你怎么能做到这一点


非常感谢您的帮助。

@Shawn Bush是正确的,这不是ng模式的默认行为

不过请看我的 我已经创建了一个名为“regExInput”的指令,它接受一个必需的属性“regEx”,并根据每个返回false的键笔划检查该属性,如果根据正则表达式输入无效

指令的代码:

app.directive("regExInput", function(){
"use strict";
return {
    restrict: "A",
    require: "?regEx",
    scope: {},
    replace: false,
    link: function(scope, element, attrs, ctrl){
      element.bind('keypress', function (event) {
        var regex = new RegExp(attrs.regEx);
        var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
        if (!regex.test(key)) {
           event.preventDefault();
           return false;
        }
      });
    }
};
});
我希望这有帮助。请毫不犹豫地要求对代码进行任何改进:)


我还借用了Dale的答案中的jQuery代码,据我所知,这不是ng模式的预期行为。作为建议,我认为从用户的角度来看,这也不是预期的行为,所以这可能会让他们感到沮丧或惊讶。例如,当用户将无效值粘贴到字段中时会发生什么情况?谢谢。我们同意在表单验证中使用ng模式行为。感谢您的指导。我们同意在表单验证中使用ng模式行为。这实际上是可行的,您可以使用ng模式属性值作为指令链接中的regexp输入。