【问题标题】:Adding ng-minlength to input field将 ng-minlength 添加到输入字段
【发布时间】:2015-07-28 17:39:37
【问题描述】:

我正在尝试将 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);
                };
        }
    };
}]);

在这里http://plnkr.co/edit/G4DaGSt190NTdaognJrJ?p=preview

【问题讨论】:

  • 你为什么使用compile而不是将这些值添加到模板中?

标签: angularjs


【解决方案1】:

只有你需要做的改变是cm-number而不是cm-Number,都应该是小写的。

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

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

Working Plunkr

【讨论】:

  • 是的,看起来像是那个版本的一个错误。不幸的是,我正在从事的项目使用 angular 1.2.28。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 2012-03-16
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多