2016-11-15 109 views
1

我無法將輸入類型編號限制爲正數。正如那篇文章中所述:HTML5: number input type that takes only integers?我是而不是尋找step =「1」的答案,因爲它允許用戶鍵入{e。}。限制輸入類型編號

我使用的是指令我在相關的職位發現(How do I restrict an input to only accept numbers?),而我只是增加了一些控制檯日誌和一個toString():

它的正常工作,當輸入類型是文本,但它是當輸入類型是數字時我從來沒有打過電話,而且輸入'e'','或'。'。

任何想法,我在這裏失蹤?我想使用輸入類型=數字來啓用箭頭以使用角度材質選擇一個值。

function restrictInput($mdDialog) { 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, element, attr, ctrl) { 
     function inputValue(value) { 
     console.log("hello ! :", value) 
     var val = value.toString(); 
     console.log("goodbye ! : ", val) 
     if (val) { 
      var digits = val.replace(/[^0-9]/g, ''); 
      console.log("digits :", digits) 
      console.log("val : ", val) 
      if (digits !== val) { 
      ctrl.$setViewValue(digits); 
      ctrl.$render(); 
      } 
      return parseInt(digits, 10); 
     } 
     return undefined; 
     } 
     ctrl.$parsers.push(inputValue); 
    } 
    }; 
} 

HTML是這樣的:

<md-input-container flex class="md-input-has-placeholder"> 
    <label>Années d'expérience stage inclus</label> 
    <input 
     type="number" 
     required 
     step="1" 
     restrict-input 
     min="0" 
     name="Expérience stage" 
     ng-model="model"> 
    <div ng-messages="form['Expérience stage'].$error" md-auto-hide="false"> 
     <div ng-message="required">Requis</div> 
    </div> 
</md-input-container> 

編輯

使用getter setter方法(NG-模型選項= 「{getterSetter:真正}」)工作在這裏完美。

+0

爲$ scope.model寫一個手錶並限制輸入並將其替換爲 – M14

+2

''是數字值的開始。那麼你只需要檢查它不是一封信。另見http://stackoverflow.com/questions/7372067/is-there-any-way-to-prevent-input-type-number-getting-negative-values – Maxime

回答

2

如果只需要限制輸入類型「number」只接受整數,則不需要使用指令。

<input type="number" ng-pattern="/^(0|[1-9][0-9]*)$/" > 

你能在應用程序中輸入上面的代碼嗎?

這隻會接受數字。

+0

更簡單的模式將是'/^[0-9] + $ /' – casraf

+0

模式在數字爲 –

+0

時不起作用它正在爲我工​​作。你可以在這裏看到demo首先輸入的是答案模式 - http://jsfiddle.net/ExpertSystem/63mwL/ –