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

时间:2015-03-10 22:31:30

标签: 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个字符。

同样,当用户键入任何特殊字符或空格时,我想阻止“按键”事件。目前,ng-pattern似乎并没有阻止用户输入无效输入。

怎么做呢?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:21)

@Shawn Bush是正确的,这不是ng-pattern的默认行为。

但请查看我的plunk 我创建了一个名为&#34; regExInput&#34;的指令。它采用了必需的属性&#34; regEx&#34;如果条目根据正则表达式无效,则针对每个键笔划检查此项返回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代码找到了here

的答案