将ng-minlength添加到输入字段

时间:2015-07-28 17:39:38

标签: angularjs

我试图将ng-minlength和ng-maxlength添加到表单输入字段。发生了一些奇怪的事情。当输入的数字小于最小长度时,它将消失,并且永远不会添加到模型中。

但是,如果您使用超过13位的数字,它会渲染但不会添加到模型中。

    app.directive('cmNumber', ['$compile', function ($compile) {
    return {
        restrict: 'A',
        compile: function (element) {
            var onlyNumbers = /^\d+$/;
            element.attr('ng-minlength', '13');
            element.attr('ng-maxlength', '19');
            element.attr('ng-pattern', onlyNumbers);

            element.attr('placeholder', '123456789112345');
            element.removeAttr('cm-Number'); //remove the attribute to avoid infinite loop

            return function (scope, element) {
                    $compile(element[0].form)(scope);
                };
        }
    };
}]);

plunker http://plnkr.co/edit/G4DaGSt190NTdaognJrJ?p=preview

1 个答案:

答案 0 :(得分:1)

只有您需要进行更改cm-number而不是cm-Number所有内容都应该是小的。

否则您的代码完全正确。上述指令背后的原因不起作用是你指的是角度测试版1.3.0-beta.5,它可能已经破坏了你正在尝试的东西。

您应该将其升级为稳定版的angular 1.3.15,也可以升级为最新的angular 1.4+版本

Working Plunkr