验证百分比变量。没有小数点,没有负数

时间:2016-06-24 12:43:18

标签: javascript

这听起来很简单,却无法让它发挥作用。 我需要接受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;
}

7 个答案:

答案 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
}

您需要做的就是将范围验证集成到这些块中的任何一个