我想要一个 AngularJS 中的指令,它应该允许 0 到 1 之间的十进制数。此外,它也可以允许“-1”。
例如:-1 有效 0 有效 1 有效 0.12 有效 0.99 有效 1.01 无效
如果您有任何建议,请告诉我。谢谢你。
我想要一个 AngularJS 中的指令,它应该允许 0 到 1 之间的十进制数。此外,它也可以允许“-1”。
例如:-1 有效 0 有效 1 有效 0.12 有效 0.99 有效 1.01 无效
如果您有任何建议,请告诉我。谢谢你。
好的,如果新值无效,我做了一个忽略用户输入的指令。它允许一些部分书写的文本,如0.
or -
。确切的行为可以很容易地改变。现在它使用 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... 也是有效的)。如果您只想要两位数,请将\d*
RegExp 更改为\d{0,2}
. 工作 plunkr:http ://plnkr.co/edit/xjx2dzVAJ0gM6j9Jbxrq
也许这有点矫枉过正,但创作很有趣。