【发布时间】:2016-05-16 14:51:01
【问题描述】:
我正在编写一个函数来验证一个数字是否是有效剂量。有效剂量由 0 到 100(包括范围)的值给出。看似简单,其实有3个条件:
- 该值不是必需的,所以空值应该返回true;
- 末尾可以有一个可选的“%”百分号;
- 小数位也是可选的。
我想我已经接近最终功能了,但是有一个测试我的功能失败了,我不明白为什么:
function checkDosage(originalValue) {
var validDosage, isNumeric,
value = originalValue;
isNumeric = function(num) {
return !isNaN(num);
}
// take off percent sign if exists
if (value.slice(-1) == '%') {
value = value.slice(0, -1);
}
// get numeric value
value = parseFloat(value);
// check if it is really a number
isNumeric = isNumeric(value);
// conditional for dosage
validDosage = value >= 0 && value <= 100;
// treatment
if (!originalValue || isNumeric && validDosage) {
return true; // valid
}
return false; // invalid
}
checkDosage(''); // true
checkDosage('0'); // true
checkDosage('%'); // true
checkDosage('-1%'); // false
checkDosage('10.5%'); // true
checkDosage('10%%'); // true ??????? THIS SHOULD BE FALSE
checkDosage('100%'); // true
checkDosage('101%'); // false
感谢您的宝贵时间。
【问题讨论】:
标签: javascript validation