2017-09-14 22 views
0

How to limit input[number]の指令を使用すると問題が発生します。角度制限入力[数値]長

入力が最大に達したときに、入力にマークを付ける(入力をダブルクリックする)桁を押して入力全体を変更するには、指示文のために変更しないでくださいe.preventDefault(); 選択イベント次の場所で閲覧できます:

angular.element(elem).on("select", function(e) { 
       console.log(e); 

      }); 

これを修正するにはどうすればよいですか? ディレクティブ:

angular.module('myApp') 
    .directive('limitTo', limitTo); 

function limitTo() {  
    return { 
     restrict: "A", 
     link: function(scope, elem, attrs) { 
      var limit = parseInt(attrs.limitTo); 
      angular.element(elem).on("keypress", function(e) { 
       if (this.value.length == limit){ 
        e.preventDefault(); 
       } 
      }); 
     } 
    } 
}; 

と使用:

<input type="number" class="form-control form-control-lg" limit-to="6" 
    ng-model="vm.details.m_inputSMS" placeholder = {{vm.configProprs.kodPlaceHolder}} name ="m_inputSMS" id="m_inputSMS" 
    ng-model-options="{ updateOn: 'blur' }"required/> 
+0

いくつかのコードを追加してください。これまでに何を試しましたか? – lin

+0

が追加されました。元の質問と同じです。 –

+0

は、値を新しいものに置き換えようとしましたが、それが最善の方法であるとは限りません。 –

答えて

0

だから私はwindow.getSelection().toString()を使用して選択入力と一致することを確認し、この問題を解決するために:

if(this.value.length == limit && window.getSelection().toString() == this.value){ 
    //logic goes in here... 
} 
+0

このソリューションでのダブルクリックの動作はどこですか? – lin

+0

選択文字列へのダブルクリック挿入値。 –

0

あなたが与えたい場合入力フィールドに制限する場合は、ng-minlength="6"ng-maxlength="6"を使用して、これをanglejに割り当てることができます。

<input type="number" class="form-control form-control-lg" ng-minlength="6" ng-maxlength="6" 
    ng-model="vm.details.m_inputSMS" placeholder = {{vm.configProprs.kodPlaceHolder}} 
    name ="m_inputSMS" id="m_inputSMS" ng-model-options="{ updateOn: 'blur' }"required/> 
+0

いいえ、もう一度質問を読んで、私は長さの制限が欲しいです。 –

+0

ng-minlengthとng-maxlengthを使用すると、入力フィールドに6桁の値を入力できます。 – Nikita

+0

それのための手伝いを投稿してください。 –

関連する問題