0 から 1 までの 10 進数を許可する AngularJS のディレクティブが必要です。さらに、「-1」も許可できます。
例: -1 は有効 0 は有効 1 は有効 0.12 は有効 0.99 は有効 1.01 は無効
提案があれば教えてください。ありがとうございました。
0 から 1 までの 10 進数を許可する AngularJS のディレクティブが必要です。さらに、「-1」も許可できます。
例: -1 は有効 0 は有効 1 は有効 0.12 は有効 0.99 は有効 1.01 は無効
提案があれば教えてください。ありがとうございました。
OK、新しい値が有効でない場合にユーザー入力を無視するディレクティブを作成しました。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... も有効です)。2 桁だけが必要な場合は\d*
、RegExp を に変更し\d{0,2}
ます。plunkr の作業: http://plnkr.co/edit/xjx2dzVAJ0gM6j9Jbxrq
ちょっとやり過ぎかもしれませんが、作っていて楽しかったです。