0

我想在AngularJS中指令應該允許0到1之間的十進制數字。另外,它也可以允許「-1」。AngularJS指令爲0到1之間的十進制數字

對於如: -1有效 0是有效的 1有效 0.12有效 0.99有效 1.01無效

請讓我知道如果您有任何建議。謝謝。

+0

小心解釋「允許」是什麼意思?該指令究竟做了什麼? –

+0

我認爲@kju的意思是:您是否希望它阻止用戶輸入任何不符合您要求的內容?或者如果輸入包含無效值,只需將輸入標記爲無效?或者是什麼? – tennisgent

+0

我想停止用戶輸入輸入 - 任何不符合要求的東西。謝謝! –

回答

6

好吧,我做了一個指令,忽略用戶輸入,如果新值將無效。它允許一些部分書寫的文本,如0.-。確切的行爲可以很容易地改變。現在它使用RegExp來查找輸入是否爲數字,然後測試此數字是-1還是0和1之間的數字。它還允許使用空字符串或-

app.directive('allowZeroToOne',function(){ 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, el, attrs, ngModelCtrl){ 
     function fromUser(text) { 
     var old = ngModelCtrl.$modelValue; 
     var f = parseFloat(text); 
     if(RegExp(/^(-?0*\d(\.\d*)?)$/).test(text) && (f===-1 || (f >= 0 && f <= 1)) || text==='' || text==='-') { 
      return text; 
     }else{ 
      ngModelCtrl.$setViewValue(old); 
      ngModelCtrl.$render(); 
      return old; 
     } 
     } 
     ngModelCtrl.$parsers.push(fromUser); 
    } 
    } 
}); 

哦,現在它允許任何精度(所以0.111 ...也是有效的)。如果您只需要兩位數字,請將RegExp中的\d*更改爲\d{0,2}。工作plunkr:http://plnkr.co/edit/xjx2dzVAJ0gM6j9Jbxrq

也許它有點矯枉過正,但它很有趣的創造。

+0

這是行得通的。謝謝。 –

+0

@AkshayaAradhya - 如果您將我的答案標記爲接受,我會很高興;) – lort

+0

完成。謝謝,Lort。 :) –

相關問題