我有一个具有KeyUp事件的表单文本字段.在KeyUp上我忽略了对数,但是数字,句点,退格,删除和光标键.因此,该领域唯一可以是数字或期间.
我需要验证这些内容(数字将变为%不超过100.00%): - 文本字段字符串是一个有效数字(除非有人放入两个'.',否则应始终为真). - 文本字段字符串最多有2个小数位 - 如果文本字段字符串有小数点,则后面有一些内容(小数点后1或2位,而不是结尾处的句点) - 数字不大于100 (<= 100)
示例(我需要验证的内容):
95 is true (valid, decimal places not required)
95. is false (don't need a '.' with no decimal place after)
95.0 is true
95.00 is true
95.000 is false (3 decimal places not valid) 100 is true
101.01 is false (over 100)
101 is false (over 100)
Run Code Online (Sandbox Code Playgroud)
我已经看到了一些可以执行该列表的几个部分的东西,但我不够聪明,无法修改正则表达式以获得我需要的内容.谢谢你的帮助!
有些人会建议正则表达式,但我认为一个小函数更适合这样的验证:
function validate(x) {
var parts = x.split(".");
if (typeof parts[1] == "string" && (parts[1].length == 0 || parts[1].length > 2))
return false;
var n = parseFloat(x);
if (isNaN(n))
return false;
if (n < 0 || n > 100)
return false;
return true;
}
console.log(validate("95"));
console.log(validate("95."));
console.log(validate("95.0"));
console.log(validate("95.00"));
console.log(validate("95.000"));
console.log(validate("101.01"));
console.log(validate("101"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10482 次 |
| 最近记录: |