2016-07-07 7 views
1
への入力数は、ユーザの入力

私は(多分角度usign)このような単純な数に4つの以上の数字を入力することからユーザーを防止するにはどうすればよい:私はng-maxlengthを使用リミット4桁

<input type="number"> 

、およびmax属性を使用していますが、w3.orgのスペックと公式ウェブサイトのAngularで指定されている属性は、ユーザーが数字を追加するのを妨げません。

私が望むのは、入力を4桁で止めるというものです。マスクに何かか何かを追加するようなものです。 D \正規表現

ng-patternを使用して

+0

はhttp://stackoverflow.com/questions/24945192/how-to-make-jquery-inputmask-work-with-input-type-を見ますnumber – Jorrex

+1

ng-maxlengthではなく、maxlength = "4"を使用してください。 – Vi100

+0

それはもうできませんか? (投稿のとおり) – Mathemagician

答えて

5

はJavaScriptを使用して、それを行うための方法です:

HTML

​​

はJavaScript

function checkNumberFieldLength(elem){ 
    if (elem.value.length > 4) { 
     elem.value = elem.value.slice(0,4); 
    } 
} 

私はまた、あなたのケースに当てはまる場合minmax HTMLの使用は、入力された番号の要素の属性を作成することをお勧め。まあ

JSFiddle

W3c: input Number

3

:桁

{4}:ここでは4回

<input type="number" ng-pattern="/^\d{4}$/" /> 
+0

これは動作しません。ユーザーはまだ4桁以上を入力することができます。 – Mathemagician

1

、誰かがMAXLENGTH前述したように、あなたがこのようにそれを行うことができますので、タイプ番号の入力では動作しません。もちろん

<input type="text" pattern="\d*" maxlength="4"> 

を、この入力タイプ= "番号"を指定する必要がない場合に行います

1

私はあなたのコントローラに関数を作成します最大属性のみスピナーのために動作します:次に、あなたのビューに警告この

<input type="number" max="9999" ng-input="checkInput()" /> 

ような何かを行うことができ、この

angular.module("my-app", []) 
    .controller('my-controller', function($scope) { 
     $scope.checkInput = function() { 
      if (input.value.length > 4) { 
       input.value = input.value.slice(0,4); 
      } 
     }); 
    }); 

のような。ユーザーはそれ以上の数字を入力することはできます。ここでは、modernizrとjQueryを使用していることを行うことができます例

<input type="number" max="9999" />

+0

ちょっと、ちょうど 'max =" 9999 "'ハックアラウンドが完璧に働きました! –

+0

いいえ、番号を手動で入力することでこれを回避できます。 –

0

です。

私はここに例を作りました:https://jsfiddle.net/5Lv0upnj/

$(function() { 
    // Check if the browser supports input[type=number] 
    if (Modernizr.inputtypes.number) { 
     $('input[type=number]').keypress(function(e) { 
      var $this = $(this), 
       maxlength = $this.attr('maxlength'), 
       length = $this.val().length; 

      if (length >= maxlength) 
       e.preventDefault(); 
     }); 
    } 
}); 
+0

彼はjQueryについても言及しておらず、他のライブラリなしでAngularを使って簡単に行うことができます。 – developer033