Angularjs自定义指令验证

时间:2017-01-12 00:51:29

标签: javascript angularjs regex angularjs-directive

为某些输入验证编写angularjs自定义指令,例如不允许输入具有超过10个字符,并且不允许输入具有前导或尾随空格,编写如下代码

angular.module("angulareDir", [])
.directive("myDirective", function() {    
    return{
             restrict: 'A',
             link: function($scope, elem, attrs) {

                var reg = /^\s+|\s+$/g;

                angular.element(elem).on("keypress", function(e) {
                var eMessage = angular.element("#message-error");

                    if (elem.val().length >= 10) {
                       e.preventDefault();
                    }
                    if (reg.test(elem.val()) === true) {
                        eMessage.show();
                        e.preventDefault();
                    }
                });
             }
            };

});

对于值超过10个字符的输入,它可以正常工作,并且正如预期的那样,不允许用户在10个字符后键入但是它不会在前导/尾随空格中工作,我不确定如果我的正则表达式错了吗?

当我在字符串之前和之后有空格时,

用例对我不起作用

  

太空空间"你好世界"空间空间

注意:我只想允许用户在字符串之间有空格但不在字符串的开头和结尾处有空格,我想在用户开始在输入框中输入时检查这个

1 个答案:

答案 0 :(得分:0)

AngularJS默认修剪输入,因此你需要使用ng-trim =" false"为了将前导和尾随空格传递给您的模式。 有关详细信息,请参阅文档doc