2017-09-14 233 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"這可以在angularjs中分配限制。

<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

發佈它的小提琴。 –