2013-10-22 25 views
0

IM AngularJS嘗試設置最大字符在文本框中如何設置最大字符,而使用iPhone上的

  <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上運行,在鍍鉻它

PS:最大=「22」不工作,要麼

很抱歉,如果我寫了這個錯誤,堆棧溢出小白..

回答

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> 
+0

+1在http://stackoverflow.com/questions/19512029/can-i-use-ngmodelcontrollers-formatter-to-fully-control-how-an-input-基本上回答我的問題字段是/你的自定義指令的例子。 – ivarni

+0

工作,但不得不改變max-length =「22」maxlength =「22」 – Egghead

+0

實際上,'maxlength'是一個內置的HTML輸入屬性,完全忘了它。儘管如此,這個指令還是有效的,但你可以通過設置'max-length'來使用它:http://plnkr.co/edit/6OdfGhNb9poGkdpGhp1o – lort

0

我希望最大長度上下工夫iOS以及Chrome。你不需要爲此使用ng-pattern,那就是ng-maxlength。它將表單標記爲無效,但不會阻止用戶輸入更多文本。

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

相關問題