antd-mini
Version:
antd-mini 是支付宝小程序 UI 组件库,遵循 Ant Design 规范。
59 lines (58 loc) • 1.5 kB
JavaScript
export function getPrecision(value) {
var valueString = String(value);
if (valueString.indexOf('e-') >= 0) {
return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);
}
var p = 0;
if (valueString.indexOf('.') >= 0) {
p = valueString.length - valueString.indexOf('.') - 1;
}
return p;
}
export function getValidNumber(value, min, max, step, precision) {
if (min === void 0) { min = -Infinity; }
if (max === void 0) { max = Infinity; }
if (typeof value === 'undefined' || value === null) {
return {
valid: true,
value: '',
};
}
var num;
if (typeof value === 'string') {
if (/^\s*$/.test(value)) {
return {
valid: true,
value: '',
};
}
if (!isNaN(Number(value))) {
num = Number(value);
}
}
else {
num = value;
}
if (num > max) {
num = max;
}
else if (num < min) {
num = min;
}
if (typeof num === 'number' && !isNaN(num)) {
if (typeof precision === 'number' && precision >= 0) {
return {
valid: true,
value: num.toFixed(precision),
};
}
precision = Math.max(getPrecision(num), getPrecision(step));
return {
valid: true,
value: num.toFixed(precision),
};
}
return {
valid: false,
};
}