在指令的帮助下限制长度

时间:2015-10-21 10:06:37

标签: angularjs angularjs-directive attributes directive maxlength

我想添加一个自定义指令作为属性,不允许用户在占位符中输入超过指定长度的文本

   <ui-select-match placeholder="Add one..." maxlength></ui-select-match>

新指令可以像“maxlength”一样,它会限制文本的长度

1 个答案:

答案 0 :(得分:1)

<textarea my-maxlength="15" ng-model="result"></textarea>

app.directive('myMaxlength', function() {
  return {
    require: 'ngModel',
    link: function (scope, element, attrs, ngModelCtrl) {
      var maxlength = Number(attrs.myMaxlength);
      function fromUser(text) {
          if (text.length > maxlength) {
            var transformedInput = text.substring(0, maxlength);
            ngModelCtrl.$setViewValue(transformedInput);
            ngModelCtrl.$render();
            return transformedInput;
          } 
          return text;
      }
      ngModelCtrl.$parsers.push(fromUser);
    }
  }; 
});