2014-01-07 19 views
6

anglejsのモジュールngの入力[番号] 指令を使用して< input type = number >を検証しようとしています。anglejsの入力タイプ=番号検証

最大(または最小)で、タイプ番号の入力を使用して、それが正常に動作しますが、私は私の最小値と最大値のデータを使用してデータを動的に来ているように

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

として数に設定する属性

<input type=number min="configRow.valueStart" max="configRow.valueEnd">, などのngリピート。

minとmaxは数字だけを受け入れていますが、私はそのためのディレクティブを書いてあまりよくありません。そのようなディレクトリや提案をいただければ幸いです。

+0

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

+0

[修正](https://github.com/angular/angular.js/commit/e1bf206fff36a12b4e5851972d2f28e5cf9695b1)はこのためにあります。 – denisazevedo

答えて

5

minおよびmaxは値を期待しています。したがって、これはうまくいくはずです:

ここにデモを示すplunkerがあります。 (これはドキュメンテーションのデモの単なる変更です)。

現在、これらの属性のソースは次のようになっています。したがって、数値が予想され、floatにキャストされることがわかります(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
MAXLENGTH、との一般的な解決策の作業を制限するために、私が知っている最良の方法は、イベントをoninput使用することです <input type="number"では動作しません

最大長すべての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 
関連する問題