这听起来很简单,却无法让它发挥作用。 我需要接受0到100之间的百分比数字,没有十进制数字,没有负数。 我该怎么做这个验证?
if ((Pcomplete == "" ) || (Pcomplete < 0 && Pcomplete > 100)) {
alert('Percentage field is required. You need to type a number between 0 and 100');
return false;
}
答案 0 :(得分:5)
这将始终验证您想要的内容,当然假设它在提供时是一个字符串。 Othwerise做值=“”+值或smth。
if (/[0-9]/.test(value) && parseInt(value) > 0 && parseInt(value) < 101) {
// it IS a number, AND its value is between 0 and 100
}
仅允许数字和仅0到-100之间的数字
正则表达式使逗号和点等无效。
答案 1 :(得分:3)
您应该将AND更改为OR,因为您需要外部范围。
Pcomplete < 0 || Pcomplete > 100
function check(Pcomplete) {
if (Pcomplete === "" || Pcomplete < 0 || Pcomplete > 100 || Pcomplete - Math.floor(Pcomplete)) {
alert('Percentage field is required. You need to type a number between 0 and 100');
return false;
}
return true;
}
check('');
check('-1');
check('0.5');
答案 2 :(得分:3)
Mod检查将确保变量是一个整数:
If Pcomplete % 1 == 0
,那么它不是十进制数。
此外,vairbale不能超过100且小于0,所以用||分隔它们。
if ((Pcomplete == "" ) || (Pcomplete < 0) || (Pcomplete > 100) || (PComplete % 1 !==0) {
alert('Percentage field is required. You need to type a whole number between 0 and 100');
return false;
}
答案 3 :(得分:1)
0到100之间的数字
if(number < 0 || number > 100 || Number.isNaN(number)) complain();
没有小数
if(!Number.isInteger(number)) complain();
没有负数:已经检查
如果您的号码是字符串,请将其转换为数字:
number = +number;
但是空格会转换为0,所以在转换检查之前
if(number.trim() === '') complain();
答案 4 :(得分:0)
(Pcomplete == "" ) || (Pcomplete < 0 && Pcomplete > 100)
该值不能&lt; 0和&gt; 100
Pcomplete == "" || Pcomplete < 0 || Pcomplete > 100 || Pcomplete % 1 !== 0
应评估
答案 5 :(得分:0)
pcomplete = parseInt(pcomplete)
if (pcomplete && (pcomplete >0 && pcomplete < 100)) {
使用正则表达式
/^[1-9]{1}[0-9]{1}$/g.test("88.88")
答案 6 :(得分:0)
我发现了一个相关的问题,从这里(来自用户Blake Regalia)获取代码:How to check if a variable is an integer in JavaScript?
if(typeof data === 'number') {
var remainder = (data % 1);
if(remainder === 0) {
// yes, it is an integer
}
else if(isNaN(remainder)) {
// no, data is either: NaN, Infinity, or -Infinity
}
else {
// no, it is a float (still a number though)
}
}
else {
// no way, it is not even a number
}
简化版:
if(typeof data==='number' && (data%1)===0) {
// data is an integer
}
您需要做的就是将范围验证集成到这些块中的任何一个