0

我试图在文本框中设置最大字符

            <form class="form-horizontal">
            <input type="text" ng-model="formtodotext" ng-model-instant maxlength="22">
            <button class="btn btn-info"ng-click="addTodo()"><i class="icon-plus"></i>Toevoegen</button>
           </form>

但它在 iphone 上不起作用,在 chrome 中它可以

PS: max="22" 也不起作用

对不起,如果我写错了,堆栈溢出菜鸟..

4

2 回答 2

2

如果您只想在输入的文本长度超过 22 时将输入标记为无效,您可以使用ng-pattern

<input type="text" ng-pattern="/^.{0,22}$/" ng-model="formtodotext" ng-model-instant>

如果他尝试输入第 23 个字符,则阻止用户输入需要自定义指令:

app.directive('maxLength',function(){
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, el, attrs, ngModelCtrl){
      function checkLength(text) {
        var old = ngModelCtrl.$modelValue;
        if(text.length<=attrs.maxLength) {
          return text;
        }else{
          ngModelCtrl.$setViewValue(old);
          ngModelCtrl.$render();
          return old;
        }
      }
      ngModelCtrl.$parsers.push(checkLength);
    }
  }
});

像这样使用它:

<input type="text" max-length="22" ng-model="formtodotext" ng-model-instant>
于 2013-10-22T07:34:27.017 回答
0

我希望 maxlength 可以在 iOS 和 chrome 上工作。你不需要为此使用 ng-pattern 有一个 ng-maxlength。它将表单标记为无效,但不会阻止用户输入更多文本。

<input type="text" ng-model="formtodotext" ng-model-instant ng-maxlength="22" maxlength="22">

于 2013-10-22T08:06:52.267 回答