2014-01-07 40 views
6

我想通過使用angularjs的模塊ng的輸入[number] 指令驗證< input type = number >input type = angularjs中的數字驗證

當使用的類型號的輸入端,與最大(小)屬性設置爲數字,如

<input type=number min="20" max="40">

它工作得很好,但我我的最小和最大數據被動態地使用未來數據ng-repeat如

<input type=number min="configRow.valueStart" max="configRow.valueEnd">, 那麼它不起作用。

我知道最小和最大隻接受數字,我沒有太多好的寫作指令,請幫助我任何這樣的目錄或任何建議,將不勝感激。

+0

http://jsfiddle.net/api/post/library/pure/ –

+0

有此一[修正](https://github.com/angular/angular.js/commit/e1bf206fff36a12b4e5851972d2f28e5cf9695b1)。 – denisazevedo

回答

5

minmax正在等待一個值。所以,這應該工作:

<input type=number min="{{configRow.valueStart}}" max="{{configRow.valueEnd}}"> 

這裏是表示一個演示plunker。 (這只是文檔演示的修改)。

目前,這些屬性的來源如下所示。所以,你可以看到一個值,然後被拋出到一個浮動與parseFloat。因此,需要將模型屬性{{}}插入到值中。

的src/NG /指令/ input.js

if (attr.min) { 
     var minValidator = function(value) { 
      var min = parseFloat(attr.min); 
      return validate(ctrl, 'min', ctrl.$isEmpty(value) || value >= min, value); 
     }; 

     ctrl.$parsers.push(minValidator); 
     ctrl.$formatters.push(minValidator); 
     } 

     if (attr.max) { 
     var maxValidator = function(value) { 
      var max = parseFloat(attr.max); 
      return validate(ctrl, 'max', ctrl.$isEmpty(value) || value <= max, value); 
     }; 

     ctrl.$parsers.push(maxValidator); 
     ctrl.$formatters.push(maxValidator); 
     } 
0

最大長度不會<input type="number"我所知道的最好的方法是使用oninput事件工作,以限制最大長度,它與一個通用的解決方案工作所有的Javascript框架。請參閱下面的代碼。

<input name="somename" 
    oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" 
    type = "number" 
    maxlength = "6" 
/>T