2017-03-28 15 views
1

です。多くの人がこの問題を解決するために指示を使用していることがわかりました。私はディレクティブが好きですが、それは大規模な過度の攻撃のように感じます。入力ボックスの文字を数字以外の数字に限定してください。角度は

私は、任意の数は(これだけAZを許可許可することはできませんが、私はビジネス要件はわずか4英数字に制限していたと思ったので、このコードは素晴らしい

maxlength="4" 

を働く入力

<input maxlength="4" type="text" id="CustomerNameKey" name="CustomerNameKey" class="form-control" ng-model="detail.customerNameKey" placeholder="Customer Name Key" required /> 

を持っています/ AZ)

私はこのように見えます

    すべてのこれらのディレクティブのソリューションは
  1. 私に狂ったように見える
  2. それがページに警告を投げ、それは私が入力されるように4つの以上の文字を許可しないことを好むの入力を制限していない、とだけアルファと
  3. 角度のドキュメントすべてのインライン正規表現はできますか?
+0

' 'oninput =" this.value = this.value.replace(/ [^ a-zA-Z]/g、' ') ">' – Aloso

+1

ローマ... "指示を行う、ここではまともなですhttp://stackoverflow.com/questions/28230080/directive-to-allow-only-alphabetic-characters-in-view-and-model-value –

+0

ディレクティブが気に入らない場合は、おそらくあなたが快適であるか、またはそれらに十分に精通していないことを意味します。彼らは非常に簡単に書くことができ、直感的に理解することができます。特にこのような単純な問題では、努力する価値があります – Felipe

答えて

1

コメントに記載されているとおり、最適な方法はディレクティブを使用することです。実際に、私はちょうど1を作った、あなたはjsFiddle

myApp.directive('smartInput', [ 
    function() { 
    return { 
     restrict: 'E', 
     scope: { 
     value: '=' 
     }, 
     link: function(scope, element) { 
     element.bind('keypress', function(event) { 
      if (event.key.search(/\d/g) != -1) { 
      event.preventDefault(); 
      } 
     }); 
     }, 
     template: '<input type="text" ng-model="value">' 
    } 
    } 
]); 

http://jsfiddle.net/HB7LU/28432/

EDITでそれを見ることができます:

HTML5はHTMLでpattern属性を使用することによりinput要素を入力チェックをサポートし、リアルタイムで応答せず、提出に使用する必要があります。これはあなたが探している機能がある場合は、簡単な要素で逃げることができます。

<input type="text" name="charInput" pattern="[A-Za-z]" title="Not Numbers"> 

より多くの情報がw3 page on the pattern attributeに見つけることができます。また、これはサファリによってサポートされていないようです。

関連する問題