我有一个输入文本框,我想将输入限制为只有字母数字(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似乎并没有阻止用户输入无效输入。
怎么做呢?
非常感谢任何帮助。
答案 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
的答案